RETURN (Transact-SQL)
从查询或过程中无条件退出。RETURN 的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出。RETURN 之后的语句是不执行的。
语法
RETURN [ integer_expression ]
参数
- integer_expression
返回的整数值。存储过程可向执行调用的过程或应用程序返回一个整数值。
返回类型
可以选择返回 int。
注意 |
---|
除非另外说明,否则所有系统存储过程都将返回一个 0 值。此值表示成功,非 0 值表示失败。 |
注释
如果用于存储过程,RETURN 不能返回 null 值。如果某个过程试图返回空值(例如,使用 RETURN @status,而 @status 为 NULL),则将生成警告消息并返回 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. 返回状态代码
以下示例将检查指定联系人的 ID 的状态。如果所在的州是 Washington (WA),将返回状态代码 1。在其他情况下(StateProvince 的值是 WA 以外的值,或者 BusinessEntityID 没有匹配的行),返回状态代码 2。
USE AdventureWorks2008R2;
GO
CREATE PROCEDURE checkstate @param varchar(11)
AS
IF (SELECT StateProvince FROM Person.vAdditionalContactInfo WHERE BusinessEntityID = @param) = 'WA'
RETURN 1
ELSE
RETURN 2;
GO
以下示例显示执行 checkstate 返回的状态。第一个示例显示的联系人在华盛顿;第二个示例显示的联系人不在华盛顿;第三个示例显示的联系人无效。局部变量 @return_status 必须在使用前声明。
DECLARE @return_status int;
EXEC @return_status = checkstate '291';
SELECT 'Return Status' = @return_status;
GO
下面是结果集:
返回状态
-------------
1
指定一个不同的联系人编号,再执行一次该查询。
DECLARE @return_status int;
EXEC @return_status = checkstate '6';
SELECT 'Return Status' = @return_status;
GO
下面是结果集:
返回状态
-------------
2
指定另一个联系人编号,再执行一次该查询。
DECLARE @return_status int
EXEC @return_status = checkstate '12345678901';
SELECT 'Return Status' = @return_status;
GO
下面是结果集:
返回状态
-------------
2