Partilhar via


Usando RETURN

Uma instrução RETURN termina incondicionalmente uma consulta, um procedimento armazenado ou um lote. Nenhuma das instruções em um procedimento armazenado ou em um lote é executada após a instrução RETURN.

Quando usada em um procedimento armazenado, a instrução RETURN pode especificar um valor de inteiro para voltar ao aplicativo, lote ou procedimento chamado. Se nenhum valor for especificado em RETURN, um procedimento armazenado retornará o valor 0.

A maioria dos procedimentos armazenados segue a convenção de usar o código de retorno para indicar o êxito ou a falha do procedimento armazenado. Os procedimentos armazenados retornam um valor 0 quando nenhum erro foi encontrado. Qualquer valor diferente de zero indica que houve um erro. Por exemplo:

USE AdventureWorks;
GO
-- Create a procedure that takes one input parameter
-- and returns one output parameter and a return code.
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
    @MaxTotal INT OUTPUT
AS
-- Declare and initialize a variable to hold @@ERROR.
DECLARE @ErrorSave int;
SET @ErrorSave = 0;
-- Do a SELECT using the input parameter.
SELECT c.FirstName, c.LastName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
WHERE EmployeeID = @EmployeeIDParm;
-- Save any nonzero @@ERROR value.
IF (@@ERROR <> 0)
    SET @ErrorSave = @@ERROR;
-- Set a value in the output parameter.
SELECT @MaxTotal = MAX(TotalDue)
FROM Sales.SalesOrderHeader;
IF (@@ERROR <> 0)
    SET @ErrorSave = @@ERROR;
-- Returns 0 if neither SELECT statement had
-- an error, otherwise returns the last error.
RETURN @ErrorSave;
GO

Um lote Transact-SQL ou um procedimento armazenado que executa um procedimento armazenado pode recuperar o código de retorno em uma variável de inteiro:

DECLARE @ReturnStatus int;
DECLARE @MaxTotalVariable int;
DECLARE @MaxTotal int;
EXECUTE @ReturnStatus = SampleProcedure @EmployeeIDParm = 65 ,@MaxTotal = @MaxTotalVariable OUTPUT;
PRINT ' ';
PRINT 'Return code = ' + CAST(@ReturnStatus AS CHAR(10));
PRINT 'Maximum Order Total = ' + CAST(@MaxTotalVariable AS CHAR(15));
GO

Os aplicativos que chamam um procedimento armazenado podem associar a uma variável de inteiro um marcador de parâmetro que corresponde ao código de retorno.