如何在存储过程的中途退出?
我有一个存储过程,在尝试调试时想要提前结束。我已经尝试使用RETURN
和RAISERROR
语句,但是存储过程仍在继续运行:
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 存储过程中退出?