伯乐共勉

讨论。NET专区
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

捕捉动态执行存储过程的异常(MSSQL)

Posted on 2006-04-03 15:02  伯乐共勉  阅读(654)  评论(0编辑  收藏  举报

在存储过程中,我们一般会用 raiserror来抛出存储过程中的异常,但如果你在这之后,又用了 return 参数的话,在外部就无法捕捉到此异常了。

比如

create proc #t1
as
  
select '1'
  
declare @errorid int
  
set @errorid = 1
  
raiserror(@errorid161)
  
return @errorid

我们用
exec('#t1')

print @@error

显示的结果是 0



alter proc #t2
as
  
select '1'
  
declare @errorid int
  
set @errorid = 1
  
raiserror(@errorid161)
  
return 


我们用

exec('#t1')

print @@error

得到的结果,是存储过程中正确抛出的值。