@@ERROR 和 @@ROWCOUNT

來源:互聯網
上載者:User
@@ERROR和@@ROWCOUNT
  1. 1.         @ERROR

當前一個語句遇到錯誤,則返回錯誤號碼,否則返回0。需要注意的是@ERROR在每一條語句執行後會被立刻重設,因此應該在要驗證的語句執行後檢查數值或者是將它儲存到局部變數中以備將來使用。具體的分析請看下面的代碼,一目瞭然。 

Update AF_CarInfo SET CarInfoID = 19 Where OilCost = 13 --執行後@@ERROR為547 

PRINT @@ERROR --執行後@@ERROR為0

IF @@ERROR = 0

BEGIN

    PRINT @@ERROR

END

-----------------------------------------------------------------

訊息547,層級16,狀態0,第1 行

Update 語句與REFERENCE 約束"FK_AF_MILEE_REFERENCE_AF_CARIN"衝突。該衝突發生於資料庫"Lymit_PrintERP",表"dbo.AF_MileEnrol", column 'CarInfoID'。

語句已終止。

547

0

分析:上面的更新SQL語句導致主外鍵衝突,拋出錯誤資訊,所以在執行Update語句後的@@Error數值是547,但是在執行第一個Print @Error語句輸出錯誤資訊之後,注意,此時@@Error的資料立即變成了0!,這一點非常重要,因為@@Error在每一條語句執行後立刻被重設!同樣的道理,執行IF @@ERROR = 0語句後@@ERROR的數值仍然是0,因為這句話也沒有發生錯誤!

  1. 2.         @@ROWCOUNT

返回上一語句受影響的行數!和@ERROR一樣的特性,在每一條語句執行後都將被重設,如果將來使用需要將變數儲存到局部變數中。任何不返回的語句都將這個變數置為0!比如經常使用的IF語句。廢話少說,上代碼!

DECLARE @RowCountVar INT

Update AF_CarOil SET OilType = '五號汽油'--執行後@@ROWCOUNT為2

SET @RowCountVar = @@ROWCOUNT --執行後@@ROWCOUNT為1

IF @@ROWCOUNT = 1  --執行後@@ROWCOUNT為0

BEGIN

    PRINT '影響的行數為1'

PRINT @@ROWCOUNT

END

IF @RowCountVar <> 0

BEGIN

    PRINT '受影響的行數為:' + STR(@RowCountVar)

END

-----------------------------------------------------------------

 

(2 行受影響)

影響的行數為 1

0

受影響的行數為:        2

    分析:上面的代碼中在執行Update語句之後,受影響的行數為2行,然後將受影響的行數儲存到事先聲明的局部變數中,指派陳述式實際上影響的行數為1行,在下面的IF語句中進行了跳轉,這個地方是關鍵,這並不是Update語句受影響的行數是1,而是將@@ROWCOUNT將的賦給局部變數的過程中變成了1。在執行後IF @@ROWCOUNT = 1的判斷之後@@ROWCOUNT的數值重新被賦值為了0!

    總結:@@ROWCOUNT和@@ERROR變數的值,在執行完一條語句後總是會發生變化,所以我們將他們作為判斷的依據的時候應該首先儲存在局部變數中。他們反映的都是緊接著的上一條語句對他們的影響!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.