Sql-Server
MS SQL Server 2014:我的錯誤在哪個儲存過程中?
作為 Microsoft SQL Server 2014 上的一個或三個一般性問題,也許我應該已經知道答案,甚至可能曾經知道 -
當我的儲存過程執行其他儲存過程時,如何找出哪個儲存過程的程式碼產生了錯誤?
是否有一種特殊的方法來處理來自 Transact-SQL 的錯誤,以辨識給定儲存過程中錯誤的位置?
儲存過程中的程式碼可以獲取它所在的過程的名稱嗎?
如果這是唯一的方法,我準備將“SET @MyNameIs = N’HastilyWrittenProcedure’”放入程式碼中。然後我可以輸入“PRINT @MyNameIs + ’ 壞了。” " 在所有的錯誤處理程序中。
使用@@procid獲取目前執行的常式並使用object_name() 將id 轉換為名稱
Hth
當我的儲存過程執行其他儲存過程時,如何找出哪個儲存過程的程式碼產生了錯誤?
在您的 CATCH 塊中,您可以使用ERROR_PROCEDURE()來獲取發生錯誤的過程或觸發器的名稱。
如果您只是在內部過程的 CATCH 塊中使用 THROW,那麼您的外部過程可以訪問這些系統函式(ERROR_PROCEDURE()、ERROR_LINE() 等)以在外部過程的 CATCH 塊中檢索有關內部過程失敗的資訊。
是否有一種特殊的方法來處理來自 Transact-SQL 的錯誤,以辨識給定儲存過程中錯誤的位置?
在您的 CATCH 塊中,您可以使用ERROR_LINE()來獲取發生錯誤的過程或觸發器的名稱。
儲存過程中的程式碼可以獲取它所在的過程的名稱嗎?
使用此程式碼:
SELECT OBJECT_NAME(@@PROCID)
獲取過程本身內部的過程名稱。這是在嵌套過程場景中使用的範例。