RETURN (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

無條件地結束查詢或程序。 RETURN 是立即而完整的,您隨時可以利用它來結束程序、批次或陳述式區塊。 系統不會執行 RETURN 之後的陳述式。

Transact-SQL 語法慣例

語法

RETURN [ integer_expression ]   

引數

integer_expression
這是傳回的整數值。 預存程序可以向發出呼叫的程序或應用程式傳回一個整數值。

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

傳回型別

選擇性地傳回 int

注意

除非另有說明,否則所有系統預存程序都會傳回 0 值。 這表示成功,而非零值則表示失敗。

備註

當搭配預存程序來使用時,RETURN 無法傳回 Null 值。 如果程序嘗試傳回 Null 值 (例如,當 @status 是 NULL 時,使用 RETURN @status),便會產生一則警告訊息,而且會傳回 0 值。

您可以將傳回狀態值包括在執行目前程序之批次或程序的後續 Transact-SQL 陳述式中,不過,必須依照下列格式輸入:EXECUTE @return_status = <procedure_name>

範例

A. 從程序傳回

下列範例會顯示當執行 findjobs 時,如果未在參數中指定任何使用者名稱,RETURN 會在訊息傳給使用者畫面之後,使程序結束。 如果指定了使用者名稱,便會從適當的系統資料表中,擷取這位使用者在目前資料庫中所建立之所有物件的名稱。

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. 傳回狀態碼

下列範例會檢查指定連絡人之識別碼的州/省份。 如果是華盛頓州 (WA),傳回的狀態就是 1。 任何其他狀況 (2 值不是 WA,或 StateProvince 沒有相符的資料列) 都會傳回 ContactID

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  

下列範例會顯示執行 checkstate 的傳回狀態。 首先顯示在華盛頓州的連絡人,其次顯示不在華盛頓州的連絡人,之後,顯示無效的連絡人。 您必須先宣告 @return_status 本機變數,才能使用它。

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

以下為結果集。

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

指定不同的連絡號碼來重新執行查詢。

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

以下為結果集。

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

指定另一個連絡號碼來重新執行查詢。

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

以下為結果集。

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

另請參閱

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