T SQL 中獲取錯誤資訊

2021-09-08 06:58:43 字數 2081 閱讀 7857

(1)在 try...catch 構造的 catch 塊的作用域內,使用以下系統函式:

error_procedure(),返回出現錯誤的儲存過程或觸發器的名稱。如果在儲存過程或觸發器中未出現錯誤,該函式返回 null。

error_severity() 返回嚴重性。

error_state(),返回狀態。

(下面所使用「系統函式」特指上面所列出的幾個系統函式)

(2)在執行任何 transact-sql 語句之後,立即使用 @@error 函式測試錯誤並檢索錯誤號。

transact-sql 中的try...catch與 c# 語言中的try….catch 功能類似。

在t-sql 中使用try...catch時注意一下幾點:

(1)try..catch 構造中使用的系統函式,僅在 catch 塊的作用域內時,系統函式才返回錯誤資訊。在 catch 塊的作用域外時,返回 null。

(2)只要是在 catch 塊的作用域內執行,系統函式即使被引用多次也將返回相同的錯誤資訊。

(3)catch 塊必須緊跟 在try 塊之後,其間不能插入任何sql語句。

(4)每個 try...catch 構造都必須位於乙個批處理、儲存過程或觸發器中。(而不能將 try 塊放置在乙個批處理中,將關聯的catch 塊放置在另乙個批處理中)

(5)try…catch 構造可以巢狀,當巢狀的 try 塊**現錯誤時,程式控制將傳遞到與巢狀的 try 塊關聯的 catch 塊。

(6)可以在 try 塊或 catch 塊內使用 goto。goto 還可用於退出 try 塊或 catch 塊;但是,無法使用 goto 進入 try 塊或 catch 塊。

(7)嚴重性為 10 或更低的錯誤被視為警告或資訊性訊息,try...catch 塊不處理此類錯誤。

(8)try...catch 塊不處理導致資料庫引擎關閉連線的嚴重性為 20 或更高的錯誤。(只要連線不關閉,try...catch 就會處理嚴重性為 20 或更高的錯誤)

(9)編譯錯誤和語句級重新編譯錯誤,是與try...catch 構造在同一執行級別發生的錯誤,try...catch 將不處理。

(10)在 try...catch 構造中,事務可以進入一種狀態:事務保持開啟但無法提交。

(catch 塊中的**可以通過使用 xact_state 函式來測試事務的狀態。如果會話中包含無法提交的事務,xact_state 將返回 -1。如果 xact_state 返回 -1,則 catch 塊將不能執行寫日誌的任何操作)

(11)try...catch 可用於處理死鎖。catch 塊可以捕獲 1205 死鎖犧牲品錯誤,並且事務可以回滾,直至執行緒解鎖。

(12)即使批處理位於 try...catch 構造的作用域內,關注訊息仍將終止該批處理。分布式事務失敗時,microsoft 分布式事務處理協調器 (ms dtc) 將傳送關注訊息。ms dtc 用於管理分布式事務。

如果上乙個 transact-sql 語句執行成功,@@error 系統函式將返回 0;如果該語句生成錯誤,@@error 將返回錯誤號。每個 transact-sql 語句完成時,@@error 的值都會更改。

因為每個 transact-sql 語句完成時,@@error 都會獲得乙個新值,可以用以下兩種方法之一處理 @@error:

(1)@@error 僅在生成錯誤的 transact-sql 語句之後,立即返回錯誤資訊。

(3)在 catch 塊的作用域外,@@error 中的錯誤號是有關 transact-sql **內錯誤的唯一可用資訊。

(4)在條件性語句(如if)中使用@@error函式時,在(if或else中)對@@error 的引用將不檢索 @@error 資訊,而是將@@error 重置。

(5)如果要在執行語句之後同時引用 @@error 和 @@rowcount,則必須在同一語句中引用它們。@@error 和 @@rowcount 都可以使用每條 transact-sql 語句進行重置。

(6)@@error 僅由錯誤產生,而不由警告產生;批處理、儲存過程和觸發器不能使用 @@error 檢測任何已發生的警告。

(1)try...catch

(msdn)

(2)@@error 函式

(msdn)

MySQL錯誤資訊

mysql的出錯 表,根據mysql的標頭檔案mysql include mysqld error.h整理而成。錯誤之處,請大家指正。1005 建立表失敗 1006 建立資料庫失敗 1007 資料庫已存在,建立資料庫失敗 1008 資料庫不存在,刪除資料庫失敗 1009 不能刪除資料庫檔案導致刪除資...

反饋錯誤資訊

即當出現錯誤 時,自動彈出我們預先設計好的反饋視窗,目的是使用者只需簡 單地按一下滑鼠就可以把反饋資訊發到你指定的信箱,當然反饋視窗的內容我們 可以任意修改設計。如下 script function errorinfo errorwin window.open width 20,height 120...

錯誤資訊介面

三 錯誤資訊介面 既然 com 是靠各種各樣的介面來提供服務的,於是很自然地就會想到,是否有乙個介面能夠提供更豐富的錯誤資訊報告那?答案是 isupporterrorinfo。下面這段 是使用 isupporterrorinfo 的一般方法 stdmethodimp c fun 上面是原理性 在我們...