SQL Server2012中的Throw語句嘗試


簡介

    SQL SERVER2012實現了類似C#拋出異常的Throw語句。相比較於SQL Server2005之前使用@@ERROR,和SQL Server2005之后使用RAISERROR()引發異常都是一個不小的進步,下面來看一下Throw的用法。

 

RAISERROR和THROW比較

    在SQL Server2005/2008中,使用RAISERROR和TRY…CATCH語句來拋出異常相比較根據@@ERROR進行判斷來講已經進步了很多。但是使用RAISERROR有一個非常不好的一點是無法返回真正出錯的行數。如圖1所示。

    1

    圖1.使用RAISERROR返回錯誤行數不正確

 

    而如果我們需要具體的錯誤信息,可能還需要這么寫,如圖2所示。

    2

    圖2.錯誤信息寫法比較麻煩

 

    而使用SQL SERVER2012新增的THROW語句,則變得簡單很多。並且能正確返回出錯的行,對於比較長的T-SQL語句來說,這節省了不少時間,如圖3所示。

    3

    圖3.THROW正確返回出錯行和出錯信息

 

    我們也可以為THROW語句指定參數來返回自定義錯誤信息,但不能再標識出正確的錯誤行,如圖4所示。

    4

    圖4.為THROW語句指定參數

 

   

小結

    因此使用THROW語句可以帶來如下好處

    1.更簡潔優雅的代碼

    2.可以正確的標識出出錯的行數,對於大量T-SQL來說,這點可以節省不少時間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM