日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL2000中@@ERROR的使用提醒

發布時間:2023/12/2 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL2000中@@ERROR的使用提醒 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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的使用提醒的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。