SQL SERVER 2000中不支持TRY, CATCH语法,所以对于异常的捕捉处理只可以根据@@ERROR来判断;

经常的用法是在执行语句后直接判断@@ERROR <> 0 看是不是执行成功。

然而日前因为存储过程的多并发调用,对一个表插入数据,产生主键冲突的情况,经过分析,由如下问题:

代码1:

BEGIN TRAN

INSERT INTO PSR..zkj_test(id) VALUES(1)

if @@ERROR <> 0
begin
SELECT @@ERROR as xxx
end
COMMIT TRAN

输出结果:

服务器: 消息 2627,级别 14,状态 1,行 1
违反了 PRIMARY KEY 约束 'PK__zkj_test__4CB7D400'。不能在对象 'zkj_test' 中插入重复键。
语句已终止。
xxx
-----------
0

(所影响的行数为 1 行)

@@ERROR输出为零,但是进入了if,表示@@ERROR 对于每一条SQL语句执行都会重新赋值,此时不能看到你想看到上句执行错误的值

代码2:

BEGIN TRAN
DECLARE @errnum AS int
INSERT INTO PSR..zkj_test(id) VALUES(6)
SET @errnum = @@ERROR

if @errnum <> 0
begin
SELECT @errnum as xxx
end
COMMIT TRAN

输出结果:

服务器: 消息 2627,级别 14,状态 1,行 1
违反了 PRIMARY KEY 约束 'PK__zkj_test__4CB7D400'。不能在对象 'zkj_test' 中插入重复键。
语句已终止。
xxx
-----------
2627

(所影响的行数为 1 行)

可以达到预期效果

两段代码的对比一目了然,关键就在于临时变量,所以以后必须十分注意。

转载于:https://www.cnblogs.com/jiqiwoniu/p/5195924.html

SQL2000中@@ERROR的使用提醒相关推荐

  1. SQL2000中默认sa帐号改名和删除的最安全方法

    SQL2000中默认sa帐号改名和删除的最安全方法 from:[url]http://bbs.51cto.com/thread-407159-1-1.html[/url]众所周知,在M$sql中有个绝 ...

  2. Dockerfile中npm中Error: could not get uid/gid问题的解决方法

    Dockerfile中npm中Error: could not get uid/gid问题的解决方法 参考文章: (1)Dockerfile中npm中Error: could not get uid/ ...

  3. VC中Error spawning cl.exe错误的解决方法.

    VC中Error spawning cl.exe错误的解决方法. 转载地址:http://blog.csdn.net/badboyfind/article/details/1816189 可能很多人在 ...

  4. oracle 中某张表备份,张表系统流程(java程序备份及恢复SQL2000中数据库中的某张表)...

    java程序备份及恢复SQL2000中数据库中的某张表 你可以现在数据库里面建立一张视图,视图里面的SQL语句就是查询该数据库中的表明,这就是访问系统表的内容,只提供单独一个列,然后展示给客户,当客户 ...

  5. Ubuntu中Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.

    Ubuntu中在用npm install 时报错 gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed i ...

  6. Vue中:error ‘XXXXX‘ is not defined no-undef解决办法

    Vue中:error 'XXXXX' is not defined no-undef解决办法 语法没错居然报错了 解决方法: 拓展 语法没错居然报错了 解决方法: 在使用vue的时候,使用一个全局变量 ...

  7. Vue中error ‘XXXXX‘ is not defined no-undef解决办法

    Vue中:error 'XXXXX' is not defined no-undef解决办法 语法没错居然报错了 解决方法: 拓展 语法没错居然报错了 解决方法: 在使用vue的时候,使用一个全局变量 ...

  8. 解决git 中 error 10053 问题

    解决git 中 error 10053 问题 问题描述: git pull 时,报错:fatal: unable to access 'https://github.com/huangyuanyin/ ...

  9. 如何在Win10日历便签中设置添加定时提醒和活动

    Win10系统是很多职场人士正在使用的电脑系统,那么在win10系统中如何添加定时提醒活动呢?有人喜欢用电脑日历便签.因为在日历便签上记事,可以清晰地查看某一个月都在哪几天添加或者完成了什么事情. W ...

最新文章

  1. (C++)寻找1-100以内所有素数,复杂度为O(nsqrt(n))与O(nloglogn)的两种方法
  2. Android之linux之基础建设之窗口系统
  3. 怎样将Embedding融入传统机器学习框架?
  4. 95-140-132-源码-transform-算子Join
  5. php页面上必须有表单,php – 在同一页面上显示提交的表单响应. (没有重装)
  6. 【路径规划】基于matlab遗传和模拟退火算法机器人路径规划【含Matlab源码 1206期】
  7. 用Python标记识别人脸制作镂空图案的“笑脸”照片墙
  8. pr计算机相关知识,影视制作技术第一讲认识premiere(pr)与视频基础知识.ppt
  9. BGA返修台使用说明
  10. python数据挖掘介绍
  11. Halcon图像拼接-算法速度优化
  12. SVN命令使用提示版本过旧的问题E155019
  13. 微信号名称乱码什么情况_微信号可以改了但却不知道改什么?
  14. ./configure 自动生成makefile
  15. FTP测试手机软件图标素材可爱,手把手教你测试FTP
  16. 一种保护眼睛的好方法
  17. 单片机电子血压计原理与设计
  18. 云服务器定时执行python脚本
  19. Dijkstra,A*,DWA,TEB
  20. 【已解决】zookeeper显示Error contacting service. It is probably not running等问题

热门文章

  1. 适合利用计算机模拟的是,计算机模拟在数学建模中的应用
  2. python是什么牌子主机_python 收集主机信息
  3. websocket没准备好如何解决_那些很重要,但是不常用的技术,websocket
  4. html怎么上传qq空间,qq空间怎么上传照片
  5. mysql哪些xss要转译查询_转义字符的妙用不用引号的字符注入和XSS脚本安全 -电脑资料...
  6. 安装虚拟机后,启动出错的解决办法
  7. 485通讯转换器产品功能特点介绍
  8. 光纤交换机按照级别可分为3种
  9. 如何预防光纤光缆布线中的雷击伤害
  10. [渝粤教育] 辽宁对外经贸学院 国际集装箱多式联运 参考 资料