簡介

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

 

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

10143952F-0  

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

 

而如果我們需要具體的錯誤資訊,可能還需要這麼寫,如圖2所示。

10143aB2-1  

圖2.錯誤資訊寫法比較麻煩

 

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

1014391P6-2  

圖3.THROW正確返回出錯行和出錯資訊

 

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

1014394O5-3  

圖4.為THROW語句指定參數



小結
因此使用THROW語句可以帶來如下好處
1.更簡潔優雅的代碼
2.可以正確的標識出出錯的行數,對於大量T-SQL來說,這點可以節省不少時間
 
來源:
http://www.2cto.com/database/201203/123088.html
arrow
arrow
    文章標籤
    SQL
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()