我有一个存储过程PROC
,它接收一些参数。如果其中一个 ,@ID
不为空,则PROC_A
必须执行给定的存储过程 , 。否则,PROC_B
必须执行。问题是它们都可能发出一个RAISERROR
,我想通过调用堆栈传播它以显示在客户端应用程序上。但是,这RAISERROR
不会PROC
像它应该那样停止其余的存储过程,而且,因为我使用的是IF
子句,所以检查IF ( @@ERROR <> 0 ) RETURN
也不是一个选项。我唯一的选择似乎是使用一个TRY...CATCH
块来包装IF
子句并在块RAISERROR
内重新抛出 from ,这很尴尬, CATCH
因为那时我将不得不缓存ERROR_MESSAGE()
和使用ERROR_SEVERITY()
ERROR_STATE()
RAISERROR
再来一次。
真的没有更优雅的方式吗?