我有一個存儲過程中的遊標中下面的代碼我一起工作:當我從SQL遊標中返回時會發生什麼?
SELECT @err_code = @@error
If @err_code <> 0
BEGIN
ROLLBACK TRAN
Select return_status = 'FAIL',
return_msg = 'Insert Into Errs Warnings Failed !!'
return 16
END
這個錯誤檢查有一些表插入(仍然光標內)前。最近我遇到了一個錯誤,我們插入的表與編寫的插入語句不匹配(列名或提供的值的數量與表定義不匹配)。我一直認爲這個錯誤檢查代碼會抓住這個並且終止這個過程,但是由於某種原因,它所做的只是向日志輸出錯誤消息並繼續運行。 Column name or number of supplied values does not match table definition
是錯誤消息。
所以我想知道這是否與遊標內部的返回有關。有可能在這種情況下,所有的return 16
都會退出遊標並繼續執行存儲過程的其餘部分?還是應該完全終止程序?我正在使用MS SQL Server 2008.
謝謝!
兩個問題......你爲什麼不使用try/catch塊?你爲什麼使用光標?這看起來像一個典型的過程,其中光標不是做事情的最佳方式。 – 2014-12-01 21:15:28