关于全局变量@@error的问题!!!

imhappyboy 2004-05-04 06:58:54
通常存储过程中的事务都好似以下这样写法:(书上很多这样的例子)

update LeaseSchedule
set PeriodicTotalAmount = 0
where ScheduleID = @ABC
if @@error <> 0 Rollback

但如果在if 语句之前,update语句之后,其他存储过程执行了其他命令,可以修改@@error的值吗?如果可以,那这句if 岂不是没有意义?有没有其他办法,可以判断一句SQL是否成功执行?
...全文
69 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
asa80 2004-05-05
学习ing
  • 打赏
  • 举报
回复
zjbee 2004-05-05
@@ERROR
返回最后执行的 Transact-SQL 语句的错误代码。

语法
@@ERROR

返回类型
integer

注释
当 Microsoft® SQL Server™ 完成 Transact-SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。

由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。


  • 打赏
  • 举报
回复
skh 2004-05-05
创建一个警报

用一个if判断来触发这个警报就知道了,

有问题Email:songkaihanwu@163.com
  • 打赏
  • 举报
回复
life583 2004-05-04
可以判断@@sqlstatus的状态。看@@sqlstatus是否=0,如果为0则SQL语句执行成功!
  • 打赏
  • 举报
回复
zjcxc 2004-05-04
@@error仅受你的当前过程的语句的影响
  • 打赏
  • 举报
回复
zjcxc 2004-05-04
@@ERROR
返回最后执行的 Transact-SQL 语句的错误代码。

语法
@@ERROR

返回类型
integer

注释
当 Microsoft® SQL Server™ 完成 Transact-SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。

由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。

  • 打赏
  • 举报
回复
zjcxc 2004-05-04
@@error当然要紧跟处理的语句才行。
  • 打赏
  • 举报
回复
imhappyboy 2004-05-04
有些书上不是这样说的,因@@error是全局变量,是在服务器端维护的,所以任何一条SQL命令都可以改变它的值.
  • 打赏
  • 举报
回复
zheninchangjiang 2004-05-04
是顺序执行的,其他语句产生的错误是在你那个@@ERROR中处理不了的
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
加入

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2004-05-04 06:58
社区公告
暂无公告