ストアド プロシージャの途中で終了するにはどうすればよいですか?
早期に (デバッグ中に) 救済したいストアド プロシージャがあります。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 のストアド プロシージャから抜け出すにはどうすればよいかということです。