RETURN (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例

从查询或过程中无条件退出。 RETURN 的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出。 RETURN 之后的语句是不执行的。

Transact-SQL 语法约定

语法

RETURN [ integer_expression ]   

参数

integer_expression
返回的整数值。 存储过程可向执行调用的过程或应用程序返回一个整数值。

返回类型

可以选择返回 int

注意

除非另外说明,否则所有系统存储过程都将返回一个 0 值。 此值表示成功,非 0 值表示失败。

备注

如果用于存储过程,RETURN 不能返回 null 值。 如果某个过程试图返回空值(例如,使用 @status,而 @status 为 NULL),则将生成警告消息并返回 0 值。

在执行了当前过程的 batch 或过程中,返回状态值可包含在后续 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. 返回状态代码

以下示例将检查指定联系人的 ID 的状态。 如果所在的州是 Washington (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)