Freigeben über


RETURN (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance SQL-Datenbank in Microsoft Fabric

Bewirkt ein unbedingtes Beenden einer Abfrage oder einer Prozedur. RETURN wird sofort und vollständig ausgeführt und kann zu jedem Zeitpunkt zum Beenden einer Prozedur, eines Batchs oder eines Anweisungsblocks verwendet werden. Anweisungen nach RETURN werden nicht ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

RETURN [ integer_expression ]   

Argumente

integer_expression
Der zurückgegebene ganzzahlige Wert. Gespeicherte Prozeduren können einen ganzzahligen Wert an eine aufrufende Prozedur oder Anwendung zurückgeben.

Rückgabetypen

Gibt optional int zurück.

Hinweis

Sofern nicht anders angegeben, geben alle gespeicherten Systemprozeduren den Wert 0 zurück. Dieser Wert zeigt einen erfolgreichen Verlauf an. Ein Wert ungleich 0 zeigt einen Fehler an.

Hinweise

Wenn Sie RETURN in einer gespeicherten Prozedur verwenden, kann RETURN keinen NULL-Wert zurückgeben. Falls eine Prozedur versucht, einen NULL-Wert zurückzugeben (z. B. wenn RETURN @status verwendet wird, und @status den Wert NULL hat), wird eine Warnmeldung generiert und der Wert 0 zurückgegeben.

Der Rückgabestatuswert kann in nachfolgenden Transact-SQL-Anweisungen des Batches oder der Prozedur verwendet werden, von dem oder der die aktuelle Prozedur ausgeführt wurde, der Aufruf muss jedoch in der folgenden Form eingegeben werden: EXECUTE @return_status = <procedure_name>.

Beispiele

A. Rückgabe aus einer Prozedur

Das folgende Beispiel verdeutlicht, dass findjobs eine Beendigung der Prozedur nach dem Senden einer Meldung an den Benutzerbildschirm bewirkt, wenn bei Ausführung von RETURN kein Benutzername als Parameter angegeben ist. Falls ein Benutzername angegeben wurde, werden die Namen aller von diesem Benutzer in der aktuellen Datenbank erstellten Objekte aus den entsprechenden Systemtabellen abgerufen.

CREATE PROCEDURE findjobs @nm sysname = NULL  
AS   
IF @nm IS NULL  
    BEGIN  
        PRINT 'You must give a user name'  
        RETURN  
    END  
ELSE  
    BEGIN  
        SELECT o.name, o.id, o.uid  
        FROM sysobjects o INNER JOIN master..syslogins l  
            ON o.uid = l.sid  
        WHERE l.name = @nm  
    END;  

B. Rückgabestatuscodes

Im folgenden Beispiel wird der Staat für die ID des angegebenen Kontakts überprüft. Falls als Staat Washington (WA) ermittelt wird, wird der Status 1 zurückgegeben. Andernfalls wird für jede andere Bedingung 2 zurückgegeben (ein anderer Wert als WA für StateProvince oder ein ContactID-Wert, der mit keiner Zeile übereinstimmte).

USE AdventureWorks2022;  
GO  
CREATE PROCEDURE checkstate @param VARCHAR(11)  
AS  
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE ContactID = @param) = 'WA'  
    RETURN 1  
ELSE  
    RETURN 2;  
GO  

Im folgenden Beispiel wird der Rückgabestatus der Ausführung von checkstate gezeigt. Das erste Beispiel zeigt einen Kontakt in Washington an, das zweite einen Kontakt außerhalb Washingtons und das dritte einen ungültigen Kontakt. Die lokale Variable @return_status muss deklariert werden, bevor sie verwendet werden kann.

DECLARE @return_status INT;  
EXEC @return_status = checkstate '2';  
SELECT 'Return Status' = @return_status;  
GO  

Hier sehen Sie das Ergebnis.

Return Status 
 
------------- 
 
1

Führen Sie die Abfrage mit einer anderen Kontaktnummer erneut aus.

DECLARE @return_status INT;  
EXEC @return_status = checkstate '6';  
SELECT 'Return Status' = @return_status;  
GO  

Hier sehen Sie das Ergebnis.

Return Status  
-------------  
 
2

Führen Sie die Abfrage mit einer weiteren Kontaktnummer erneut aus.

DECLARE @return_status INT  
EXEC @return_status = checkstate '12345678901';  
SELECT 'Return Status' = @return_status;  
GO  

Hier sehen Sie das Ergebnis.

Return Status  
-------------  
 
2

Weitere Informationen

ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local_variable (Transact-SQL)
THROW (Transact-SQL)