SQL SERVER中如何捕获错误?(50分)

  • 主题发起人 TouchSky
  • 开始时间
T

TouchSky

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大虾,在SQL SERVER的存储过程或自定义函数中,能否象DELPHI中的
TRY。。。EXCEPT。。。END 或 TRY。。。FINALLY。。。END 一样捕获各种错误并做相应
的处理,而且使整个过程(函数)的执行不受到影响?
通过检查全局变量@@ERROR虽然可以知道已经出错,但是整个过程(函数)的执行已经
不会继续了。烦劳各位高手指点迷津,先谢过了!
 
你可以在存储过程中返回一个值,让delphi中来接收这个返回值,通过返回值来做相应的判
断处理。
eg:
dbo.check
@pr1 char(10),@Out int output
as
begin tran //用事务。
.....
commit tran
set @Out=1
...
go
delphi中:
sql.add('exec check s,i output')
parameters.parambyname(s).value:='sdfs';
execsql;
if parameters.parambyname(i).value=1 then//如果是真,则。。。
begin
.......
end
else
begin
......
end;
 
if @@ERROR<>0
begin
rollback tran
return -10 --在程序里检查,翻译成你定义的错误
或 raiserror('***错误',16,1)
end
 
上面二位仁兄的答案我都知道的,我的想法是在存储过程或自定义函数中,如果出错,不会
影响我的后续语句的运行,而是能继续执行完这个过程(函数).象DELPHI里用TRY就可以实现.
无论出什么错,程序都不会中断执行的.因为我的过程里要做许多件事,不想因为其中一件事
出了问题而后面的事情都没法做了.
 
顶部