我有两个与下面的模板相似的存储过程。
create proc proc3
as
begin
select 'entering proc 3'
raiserror 20000 'Not implemented'
return 1
end
create proc proc2
as
begin
select 'entering proc 2'
declare @ret int
exec @ret = proc3
select 'completred proc3'
if @ret <> 0
begin
select 'error'
end
end
proc3-使用raiserror报告错误并返回状态1。
proc2-使用proc3的返回状态,如果其非零,则进行一些错误处理
当我在sql客户端中执行proc2时,得到的返回状态为预期的1,并且还会引发错误-
输出:
entering proc 2
entering proc 3
completred proc3
<along with the error> - Not implemented Msg: 20000, Level: 16, State: 1
当我从Java(通过ant任务)运行相同代码时,没有错误处理代码运行。似乎一旦发现带有SQLException的proc中的raiserror,就会立即停止执行。
有人遇到同样的问题吗,有没有解决的办法?目前尚不清楚这是否是预期的行为。
感谢您的时间和帮助。