关于全局变量@@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是否成功执行?
...全文
145 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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中处理不了的

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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