Parâmetros de Saída e declaração RETURN no SQL Server

Parâmetros de Saída e declaração RETURN em Procedimentos Armazenados

Os Parâmetros de Saída habilitam um procedimento armazenado a retornar dados ao procedimento chamador.

Usamos a palavra-chave OUTPUT quando o procedimento é criado, e também quando é chamado.

No procedimento armazenado, o parâmetro de saída aparece como uma variável local; No procedimento chamador, uma variável deve ser criada para receber o parâmetro de saída.

Declaração RETURN

O comando RETURN termina incondicionalmente o procedimento e retorna um valor inteiro ao chamador.
Pode ser usado para retornar status de sucesso ou falha do procedimento.

Vejamos um exemplo, criando um procedimento de nome sp_teste

CREATE PROCEDURE sp_teste (@par1 AS INT OUTPUT)
AS
SELECT @par1 * 2 AS Resultado
RETURN

--Executar passando um parâmetro:

DECLARE @valor AS INT = 15
SELECT @valor AS Valor_Inicial
EXEC sp_teste @valor OUTPUT
PRINT @valor;

Outro exemplo

CREATE PROCEDURE sp_LivroValor (
  @Quantidade SMALLINT, @Cod SMALLINT = -10,
  @ID SMALLINT)
AS
  SET NOCOUNT ON
  IF @ID >= 100
    BEGIN
      SELECT Nome_Livro as Livro, Preco_Livro * @Quantidade AS Preço
      FROM tbl_Livros
      WHERE ID_Livro = @ID
      RETURN 1
    END
  ELSE
RETURN @Cod

Executar:

DECLARE @Codigo INT
EXEC @Codigo = sp_LivroValor @ID = 103, @Quantidade = 10
PRINT @Codigo

Anterior: Parâmetros de Entrada em Stored Procedures no SQL Server

 

Sobre Fábio dos Reis (1379 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

1 Comentário em Parâmetros de Saída e declaração RETURN no SQL Server

  1. Boa tarde!
    Tenho uma dúvida, estou tentando fazer uma procedure, que valide datas. Por exemplo: Quando eu for colocar duas datas, 02-09-2009 e 08-07-2001. Quero que a procedure emita algo dizendo que a primeira data é maior que a segunda. Como faço isso?

Escreva um comentário

Seu e-mail não será divulgado


*