KB-55539: Executando Stored Procedure no E3, passando dados de entrada e lendo dados de saída.

Descrição:

Como posso executar uma Stored Procedure no E3, passando dados de entrada e lendo dados de saída?

Solução:

Para isto, siga estes procedimentos:

1. Declare a variável de saída:

DECLARE @saida int

2. Utilize o comando EXEC, passando valor de entrada e informando a saída:

EXEC SP_INSERIR_MONTADOR '<¨%variavel_entrada%>', @saida OUTPUT

3. Crie um alias para o campo de retorno:

SELECT @saida as resultado

Código completo:

DECLARE @saida int
EXEC SP_INSERIR_MONTADOR '<¨%variavel_entrada%>', @saida OUTPUT
SELECT @saida as resultado

NOTA: Caso a stored procedure possua um outro resultado de saída, como um INSERT,  por exemplo, o E3 retornará vazio, não informando o valor do dado de saída. Isto ocorre porque o E3 tem acesso somente ao primeiro resultado de uma consulta, e neste caso a consulta retorna o valor do INSERT, que é vazio. Para contornar isto, basta colocar o comando SET NOCOUNT ON antes de executar a stored procedure, e desligá-lo no final. Este comando desliga as mensagens de retorno do banco de dados relativas ao número de registros afetados por comandos INSERT e UPDATE, e desta forma abre caminho para que o E3Query receba o valor de retorno da stored procedure.

Exemplo:

SET NOCOUNT ON
DECLARE @saida int
EXEC SP_INSERIR_MONTADOR '<¨%variavel_entrada%>', @saida OUTPUT
SELECT @saida as resultado
SET NOCOUNT OFF
Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Thoughts on “KB-55539: Executando Stored Procedure no E3, passando dados de entrada e lendo dados de saída.

  1. Sidney,

    Sugiro que verifique este artigo, ele contém um script que mostra como enviar um valor de entrada e retornar o valor da consulta realizada pela stored procedure.
    Basicamente você deve setar as variáveis via SetVariableValue e para o retorno utilizar GetADORecordset.

Leave a Reply

Your email address will not be published.Required fields are marked *