个人理解:
分为两个不同的批处理任务进行提交,两个任务分别执行,互不干涉,由于第二个任务未产生错误,@@ERROR恰好保留了第一个任务中的错误。 在第二种情况下两条语句作为一个任务提交,前面产生的错误中断了后面语句的执行。
不过现在有没有什么办法可以让脚本出错后继续执行,当然我现在不能用GO来把代码分开执行。我想这样就可以抓到这个错误了。有没有高手可以帮帮我啊,谢谢了!!
分为两个不同的批处理任务进行提交,两个任务分别执行,互不干涉,由于第二个任务未产生错误,@@ERROR恰好保留了第一个任务中的错误。 在第二种情况下两条语句作为一个任务提交,前面产生的错误中断了后面语句的执行。
不过现在有没有什么办法可以让脚本出错后继续执行,当然我现在不能用GO来把代码分开执行。我想这样就可以抓到这个错误了。有没有高手可以帮帮我啊,谢谢了!!
select @rc=0
begin
update from table set aa=1
select @rc=@@error
print @RC
go
还是不行啊,这个方法我试过,没有什么区别,还有你的Begin没有END,
begin tran(都大写)
update from table set aa=1
if uperr = 0
begin
commit tran
end
else
begin
print @@error
rollbake tran
end
go
但即使这样,也不对啊,再详细点可以吗?
PB 15,2
C++BU,DELPHI 16,1
select @intErrorCode=@@Error if @intErrorCode=0
begin
select @intTransactionCountOnEntry=@@TranCount
begin Tran
endif @intErrorCode=0
begin
update from table set aa=1
select @intErrorCode=@@error
select @chrvErrorMesg=cast(@intErrorCode as varchar(6))+' 出错信息'
if @intErrorCode<>0 goto Err_Handler
endErr_Handler:
if @@TranCount> @intTransactionCountOnEntry
begin
if @intErrorCode = 0
commit transaction
else begin
raiserror(@chrvErrorMesg,11,1)
rollback transaction
end
end
Return @intErrorCode
update from table set aa=1 这个语句出错是致命的,所以我刚才运行 DelphiSQL2K() 写的脚本时,还是捕不到错误,是不是SQL就是抓不到致命错误还是其它什么原因??