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:

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 p.FirstName, p.LastName, e.JobTitle
FROM HumanResources.Employee AS e
JOIN Person.Person AS p 
    ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.BusinessEntityID = @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;

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.