2012-10-19 171 views
2

我有一個包含以下代碼的存儲過程:異常不會引發

IF @somevar IS NULL 
BEGIN 
RAISERROR (N'Station %d does not exist.', -- Message text. 
     10, -- Severity, 
     7, -- State, 
     @id); 
END 

我要趕在C#代碼的SQLException。但是這個例外沒有提出。我究竟做錯了什麼?

謝謝。

回答

1

我相信你需要一個更高的嚴重級別;試試它的嚴重程度至少爲11.另外,你是否使用了ExecuteScalar--它似乎吃了異常?請參閱here

+1

實際上,11個或更多應該工作。 –

+0

謝謝,改爲11. – Polyfun

+0

謝謝,它的工作。 –

2

試試這個: - 我用16所有的時間返回狀態信息或報告 的錯誤,不嚴重

RAISERROR ('Message here', 16, 1) 

[Details here]

0-9信息性消息。數據庫引擎不會通過返回狀態信息或報告 的錯誤,不嚴重9.

參考消息提高系統 誤差爲0的嚴重性。出於兼容性原因,數據庫 引擎將嚴重性10轉換爲嚴重性0,然後將錯誤 信息返回給調用應用程序。

11-16指示可由用戶糾正的錯誤。

20-24指示系統的問題,是致命錯誤,這意味着 正在執行一個語句或批處理,數據庫引擎的任務是沒有 不再運行。該任務記錄關於發生的事情的信息,然後終止。在大多數情況下,數據庫引擎實例的應用程序連接也可能會終止。如果發生這種情況,根據問題 ,應用程序可能無法重新連接 。此範圍內的錯誤消息可能會影響訪問同一數據庫中的數據的所有進程,並可能指示數據庫或對象已損壞。從19到24的嚴重級別爲 的錯誤消息被寫入錯誤日誌。