Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eriva_br

[Resolvido] retorno de valores em procedures

Recommended Posts

parâmetros de retorno em procedures:

 

temos duas formas de retornar parâmetros em procedures por output e pelo return:

 

exemplo de procedure com os dois tipos de retornos: no exemplo vamus fazer uma calculadora com uma váriavel de output que será a variável do resultado final e no return será retornado a váriavel global de erros @@Error para verificarmos se ocorreu algum erro na execução da procedure

geração da procedure para testes:

CREATE PROCEDURE SP_CALC  	  @OPERACAO TINYINT, -->1-ADICAO, 2-SUBTRACAO, 3-MULTIPLICAÇÃO, 4-DIVISÃO	  @VALOR1 INT,	  @VALOR2 INT,	  @RESULTADO INT OUTPUT    AS  	  IF @OPERACAO = 1		  SET @RESULTADO = @VALOR1 + @VALOR2	  ELSE IF @OPERACAO = 2		  SET @RESULTADO = @VALOR1 - @VALOR2	  ELSE IF @OPERACAO = 3		  SET @RESULTADO = @VALOR1 * @VALOR2	  ELSE IF @OPERACAO = 4		  SET @RESULTADO = @VALOR1 / @VALOR2	  ELSE	  BEGIN		  SELECT 'TIPO DE OPERAÇÃO NÃO ENCONTRADA.'		  SET @RESULTADO = 0 	  END	    RETURN @@Error
execução da procedure de testes:

DECLARE @varErro int  DECLARE @Retorno int  --fazendo a adicao  EXEC @varErro = SP_CALC 1, 10, 5, @Retorno OUTPUT  SELECT @varErro AS RETORNO_Erro, @Retorno AS RETORNO_Resultado    --fazendo a subtracao  EXEC @varErro = SP_CALC 2, 10, 5, @Retorno OUTPUT  SELECT @varErro AS RETORNO_Erro, @Retorno AS RETORNO_Resultado    --fazendo uma divisão por zero pra forçar o erro  --vai retornar o erro 8134 (Divide by zero error encountered.)  EXEC @varErro = SP_CALC 4, 1, 0, @Retorno OUTPUT  SELECT @varErro AS RETORNO_Erro, @Retorno AS RETORNO_Resultado
Obs.1: o RETURN só aceita valores inteiros

Obs.2.: para melhor visualizar os retornos no exemplo de execução da procedure mude o modo de exibição do sql query analyser para "resultados em texto", o padrão dos resultados é em "grid", para mudar o resultado pra text no sql query analyser aperte Ctrl+T ou então vá ao menu "Query" e escolha a opção "Results in Text", para voltar os resultados para grid aperte Ctrl+D ou então vá ao menu "Query" e escolha a opção "Results in Grid"

 

 

 

AUTOR: "eriva_br"

 

Dúvidas, criticas, contribuições, correções e adições seram bem vindas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.