RETURN (Transact-SQL)
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 Batches 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: |
---|
Wenn 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 fehlgeschlagenen Verlauf 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 der die aktuelle Prozedur ausgeführt wurde, der Aufruf muss jedoch in der folgenden Form eingegeben werden: EXECUTE @return_status = <procedure_name>
.
Hinweis: |
---|
Die Einstellung des Kompatibilitätgrades bestimmt, ob eine leere Zeichenfolge (NULL) als einzelnes Leerzeichen oder als tatsächlich leere Zeichenfolge interpretiert wird. Ist der Kompatibilitätsgrad kleiner oder gleich 65, interpretiert SQL Server 2005 leere Zeichenfolgen als einzelne Leerzeichen. Ist der Kompatibilitätsgrad gleich 70, interpretiert SQL Server leere Zeichenfolgen als leere Zeichenfolgen. Weitere Informationen finden Sie unter sp_dbcmptlevel (Transact-SQL). |
Beispiele
A. Rückgabe aus einer Prozedur
Das folgende Beispiel verdeutlicht, dass RETURN
eine Beendigung der Prozedur nach dem Senden einer Meldung an den Bildschirm des Benutzers bewirkt, wenn bei Ausführung von findjobs
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 AdventureWorks;
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
Dies ist das Resultset.
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
Dies ist das Resultset.
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
Dies ist das Resultset.
Return Status
-------------
2
Siehe auch
Verweis
ALTER PROCEDURE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
EXECUTE (Transact-SQL)
SET @local\_variable (Transact-SQL)