![](/img/trans.png)
[英]Can't use throw or raiseerror inside try..catch block in SQL Server stored procedure
[英]Try..Catch SQL Question
有沒有辦法知道我的更新或插入語句中的哪一個通過失敗執行了catch塊
首先創建一個表變量在運行proc時,將已運行的步驟或錯誤消息插入表中。 在catch中回滾之后,表變量仍然可用,然后使用它插入到日志記錄表中。
如何用不同的try-catch塊包圍更新和插入語句?
您還可以檢查SELECT ERROR_MESSAGE(), ERROR_STATE()
以確定拋出當前異常的內容
Oracle PL / SQL具有異常處理: http : //download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/07_errs.htm 。
否則,您可以使用編程語言異常處理工具。
堆棧轉儲可以包含一些信息,例如錯誤發生在哪一行,但這不是直接有用的。
最簡單的可能是在每個查詢之前設置一個變量,然后你可以在catch中檢查它的值。
我想到的一件事是在事件查看器執行后立即將錯誤代碼記錄到事件查看器中。
例如
嘗試err_code = 1 - 查詢1- err_code = 2 - 查詢2--。 。 。 Catch - 將err_code記錄到事件查看器 -
然后通過查看事件查看器,您將看到上一次成功查詢的err_code。
希望能幫助到你
嘗試這樣的事情:
Declare @Where varchar(50)
BEGIN TRY
SET @Where='1st update'
UPDATE....
SET @Where=NULL
...
SET @Where='2nd update'
UPDATE....
SET @Where=NULL
...
SET @Where='1 insert'
INSERT....
SET @Where=NULL
END TRY
BEGIN CATCH
PRINT @Where
END CATCH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.