會發生什麼?它會自動關閉嗎?T-sql光標,如果發生錯誤會發生什麼情況?</p> <ol> <li>聲明遊標</li> <li>獲取數據</li> </ol> <p>如果遊標關閉之前發生錯誤,會發生什麼:如果過程中出現錯誤
當我使用遊標時,處理錯誤的最佳做法是什麼?
會發生什麼?它會自動關閉嗎?T-sql光標,如果發生錯誤會發生什麼情況?</p> <ol> <li>聲明遊標</li> <li>獲取數據</li> </ol> <p>如果遊標關閉之前發生錯誤,會發生什麼:如果過程中出現錯誤
當我使用遊標時,處理錯誤的最佳做法是什麼?
當聲明遊標並且批處理終止後發生錯誤時,光標將保持打開狀態。連接關閉後,光標將被關閉。
如果可以捕獲錯誤,最好關閉光標作爲錯誤處理的一部分。
具有更好的溶液
[CURSOR_STATUS][1]
的功能更新可用於檢查光標的狀態。
在SQL 2005和更高版本中,可以將其封裝在TRY...CATCH
塊中。
喜歡的東西
BEGIN TRY
DECLARE <cursorName>... CURSOR FOR
...cursor statement, fetch block, close & deallocate
END TRY
BEGIN CATCH
IF (CURSOR_STATUS('global', '<cursorName>') > -2)
DEALLOCATE dbCursor
...other error handling
END CATCH
什麼時候當沒有錯誤光標得到關閉? – 2012-05-01 11:01:13
更新了更好的解決方案;還試圖讓這個例子更清晰 – 2012-05-01 11:54:47
爲什麼> -2?如果狀態> = 0,我認爲你想關閉它。 – Trevor 2014-01-22 22:30:48