存储过程中 if @@error<>0 为什么不能捕捉到错误,前边操作没有返回

koook 2001-04-30 04:56:00
if @@error<>0
begin
rollback Transaction


set @getback='网络忙请重试'
end
...全文
283 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
koook 2001-05-01
  • 打赏
  • 举报
回复
这样也行但怎么让存储过程出错的时间不再往下执行,还时出错后存储过程自动停止了?
hydnoahark 2001-05-01
  • 打赏
  • 举报
回复
不行,你必须在每一条SQL语句后检测@@ERROR的值,如:
DECLARE @ErrorSave INT
SET @ErrorSave = 0
BEGIN TRAN

update .....
IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR
update ......
IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR

IF @ErrorSave <> 0)
ROLLBACK
else
COMMIT



koook 2001-05-01
  • 打赏
  • 举报
回复
又见到你很高兴,过节好!能不能象在asp中一样用on ERROR RESUME NEXT捕获错误?on ERROR RESUME NEXT在存储过程中不认,
hydnoahark 2001-05-01
  • 打赏
  • 举报
回复
由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧