从查询或过程中无条件退出 RETURN
来源:互联网 发布:sql2008数据库卸载 编辑:程序博客网 时间:2024/06/05 05:41
RETURN
从查询或过程中无条件退出。RETURN 即时且完全,可在任何时候用于从过程、批处理或语句块中退出。不执行位于 RETURN 之后的语句。
语法
RETURN [ integer_expression ]
参数
integer_expression
是返回的整型值。存储过程可以给调用过程或应用程序返回整型值。
返回类型
可以选择是否返回 int。
说明 除非特别指明,所有系统存储过程返回 0 值表示成功,返回非零值则表示失败。
注释
当用于存储过程时,RETURN 不能返回空值。如果过程试图返回空值(例如,使用 RETURN @status 且 @status 是 NULL),将生成警告信息并返回 0 值。
在执行当前过程的批处理或过程内,可以在后续 Transact-SQL 语句中包含返回状态值,但必须以下列格式输入:
EXECUTE @return_status = procedure_name
说明 Microsoft® SQL Server™ 2000 是将空字符串 (NULL) 解释为单个空格还是真正的空字符串取决于兼容级别设置。如果兼容级别小于或等于 65,SQL Server 就将空字符串解释为单个空格。如果兼容级别等于 70,则 SQL Server 将空字符串解释为空字符串。有关更多信息,请参见 sp_dbcmptlevel。
示例
A. 从过程返回
下例显示如果在执行 findjobs 时没有给出用户名作为参数,RETURN 则将一条消息发送到用户的屏幕上然后从过程中退出。如果给出用户名,将从适当的系统表中检索由该用户在当前数据库内创建的所有对象名。
CREATE PROCEDURE findjobs @nm sysname = NULLAS IF @nm IS NULL BEGIN PRINT 'You must give a username'
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。如果所在的州是加利福尼亚州 (CA),将返回状态代码 1。否则,对于任何其它情况(state 的值是 CA 以外的值或者 au_id 没有匹配的行),将返回状态代码 2。
CREATE PROCEDURE checkstate @param varchar(11)ASIF (SELECT state FROM authors WHERE au_id = @param) = 'CA'
RETURN 1
ELSE
RETURN 2
下例显示从 checkstate 执行中返回的状态。第一个显示的是在加利福尼亚州的作者;第二个显示的是不在加利福尼亚州的作者,第三个显示的是无效的作者。必须先声明 @return_status 局部变量后才能使用它。
DECLARE @return_status intEXEC @return_status = checkstate '172-32-1176'SELECT 'Return Status' = @return_statusGO
下面是结果集:
Return Status ------------- 1
再执行一次查询,指定一个不同的作者编号。
DECLARE @return_status intEXEC @return_status = checkstate '648-92-1872'SELECT 'Return Status' = @return_statusGO
下面是结果集:
Return Status ------------- 2
再执行一次查询,指定另一个作者编号。
DECLARE @return_status intEXEC @return_status = checkstate '12345678901'SELECT 'Return Status' = @return_statusGO
下面是结果集:
Return Status -------------
和事务结合使用
CREATE Procedure proc_test(
@para int
)
AS
declare @Err int
set @Err=0
begin transaction
UPDATE ...
if @@Error<>0 set Set @Err=1
InSert ...
if @@Error<>0 set Set @Err=1
...
if (@@error <> 0 ) or (@Err<>0)
begin
rollback transaction
return 1
end
Commit tran
return 0
- 从查询或过程中无条件退出 RETURN
- 从数据字典中查询存储过程, 函数, 包
- 无条件转移jmp详细执行过程
- ABAP 程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM...)
- ABAP 程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM...)
- ABAP 程序中退出操作(CHECK, EXIT, RETURN, LEAVE PROGRAM...)
- js中退出语句break,continue和return 比较
- Linux中进程正常退出return和exit()的区别
- js中退出语句break,continue和return 比较
- jquery中关于return不能退出方法的问题
- QucikTest中如何退出脚本或Action
- maven后台实现无条件分页查询和条件分页查询
- 如何从数据库中查询出多个结果集或一个结果集
- hive从查询中获取数据插入到表或动态分区
- hive从查询中获取数据插入到表或动态分区
- hive从查询中获取数据插入到表或动态分区
- hive从查询中获取数据插入到表或动态分区
- hive从查询中获取数据插入到表或动态分区
- Programming Microsoft Visual C# 2008 英文版
- javascript 在线压缩-A JavaScript Compressor
- VB6在ListBox或Combox中搜索字符串项的模块(支持模糊与精确查找)
- 累死了
- 常用字符集编码的概要特性(网摘)
- 从查询或过程中无条件退出 RETURN
- dataGridView的最后空白一行
- how to install curl
- 80后,还记得我们作文的必杀句吗?//->经典
- 如何更好的关闭数据库连接
- 睡眠
- 3D中点线面之间的几何关系
- somethings should do every day
- sun_java_wireless_toolkit-2_5_2-ml-windows.exe下载