我目前有一個ASP.NET應用程序,通過存儲過程處理所有對數據庫的調用,並處理所有SQL事務應用程序端。如何將SQL異常返回給調用的asp.net應用程序?
我的問題是我需要在我的存儲過程中拋出一個異常,以便它可以在應用程序中被捕獲並且可以回滾事務。我目前已經嘗試過RAISERROR和THROW,但它們只返回消息,並不會導致異常。
任何幫助,將不勝感激。
感謝
我目前有一個ASP.NET應用程序,通過存儲過程處理所有對數據庫的調用,並處理所有SQL事務應用程序端。如何將SQL異常返回給調用的asp.net應用程序?
我的問題是我需要在我的存儲過程中拋出一個異常,以便它可以在應用程序中被捕獲並且可以回滾事務。我目前已經嘗試過RAISERROR和THROW,但它們只返回消息,並不會導致異常。
任何幫助,將不勝感激。
感謝
在你的存儲過程調用RAISERROR()
的嚴重性級別必須以產生主叫側SqlException
大於或等於16。這裏是一個RAISERROR()
的例子,它將生成一個SqlException
:
RAISERROR ('Error raised in TRY block.', -- Message text.
16, -- Severity.
1 -- State.
);
感謝您的快速響應。我使用的是高於16的嚴重性級別。事實證明,在應用程序中有一個隱藏的try catch,它不包括導致錯誤的參數。所以RAISERROR從未被調用過。 –
RAISEERROR應該這樣做。檢查你的代碼,也許你在某處壓制異常。 –
'RAISEERROR'和'THROW'都應該生成一個'SQLException',除非它是在SQL中用'TRY..CATCH'處理的。 –