2014-06-10 64 views
5

我想執行以下代碼:THROW與RAISERROR

THROW 51051, 'I come from the THROW construct :)', 1 ; 

我得到的錯誤是:

Could not find stored procedure 'THROW'. 

是不是THROW過程的系統正程序?爲什麼它找不到它?

還有,unsing THROW和ErrorState有什麼區別?一個更老/更新/比另一個更好? ErrorState的「ErrorSeverity」和「ErrorState」是什麼意思?我可以定義它們嗎?或者它們是預定義的?

+1

您使用的是哪個版本?你已經爲2008和2012添加了標籤。 – Rahul

+0

@Rahul:我們正在使用2008 R2 – Adam

+2

這就是爲什麼你得到這個錯誤的原因'THROW'可以從SQL2012開始。 – Rahul

回答

5

閱讀以下內容:Differences Between RAISERROR and THROW in Sql Server


兩個RAISERRORTHROW語句用於提高錯誤SQL ServerRAISERROR的旅程從SQL Server 7.0中,那裏的THROW聲明的旅程纔剛剛開始SQL服務器2012啓動。顯然,微軟建議我們開始使用THROW語句而不是RAISERROR。 THROW陳述似乎是簡單易用,比RAISERROR

+0

事實上''RAISERROR不能用在Sql Server 2014的本地編譯的存儲過程中'。所以這一切似乎都在朝着使用更多'THROW'的方向發展 – RBT