【发布时间】:2010-12-24 04:30:50
【问题描述】:
如何在存储过程中退出?
我有一个存储过程,我想提早退出(同时尝试调试它)。我尝试调用RETURN 和RAISERROR,sp 继续运行:
CREATE PROCEDURE dbo.Archive_Session @SessionGUID uniqueidentifier AS
print 'before raiserror'
raiserror('this is a raised error', 18, 1)
print 'before return'
return -1
print 'after return'
[snip]
我知道它会继续运行,因为我遇到了进一步的错误。我没有看到我的任何打印件。如果我注释掉大部分存储过程:
CREATE PROCEDURE dbo.Archive_Session @SessionGUID uniqueidentifier AS
print 'before raiserror'
raiserror('this is a raised error', 18, 1)
print 'before return'
return -1
print 'after return'
/*
[snip]
*/
然后我没有得到我的错误,我看到了结果:
before raiserror
Server: Msg 50000, Level 18, State 1, Procedure Archive_Session, Line 5
this is a raised error
before return
所以问题是:如何摆脱 SQL Server 中的存储过程?
【问题讨论】:
-
"欢迎来到加州酒店..." =)
-
呃? (填充以使我的“Guh?”查询至少 15 个字符长)
-
哦,等等,我明白了……“你永远不能离开”。
-
这个问题甚至需要被问到,这表明 SQL 有一些偏差,但话又说回来,它是一种固定在函数式语言一侧的过程方法,所以你期望什么?
标签: sql-server tsql stored-procedures sql-server-2000 control-flow