Freigeben über


Verwenden von RETURN

Die RETURN-Anweisung beendet eine Abfrage, eine gespeicherte Prozedur oder einen Batch ohne Bedingung. Keine der Anweisungen in einer gespeicherten Prozedur oder einem Batch, die auf die RETURN-Anweisung folgen, wird ausgeführt.

Wenn die RETURN-Anweisung in einer gespeicherten Prozedur verwendet wird, kann sie einen ganzzahligen Wert angeben, der an die aufrufende Anwendung oder Prozedur oder den aufrufenden Batch zurückgegeben wird. Falls kein Wert für RETURN angegeben wird, gibt eine gespeicherte Prozedur den Wert 0 zurück.

Die meisten gespeicherten Prozeduren verwenden üblicherweise den Rückgabecode, um Erfolg oder Fehlschlagen der gespeicherten Prozedur anzuzeigen. Die gespeicherten Prozeduren geben den Wert 0 zurück, wenn keine Fehler festgestellt wurden. Ein Wert ungleich null zeigt an, dass ein Fehler aufgetreten ist. Beispiel:

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

Ein Transact-SQL-Batch oder eine gespeicherte Prozedur, die eine gespeicherte Prozedur ausführt, kann den Rückgabecode abrufen und ihn in einer ganzzahligen Variablen speichern:

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

Anwendungen, die eine gespeicherte Prozedur aufrufen, können eine dem Rückgabecode entsprechende Parametermarkierung an eine ganzzahlige Variable binden.