嗨,我正在用DB2創建一個數據庫。我使用IBM Data Client。我想使用try catch進入我的存儲過程,但它似乎不被DB2支持,任何人都可以幫助我嗎?我需要處理sql錯誤並返回它。我怎樣才能做到這一點?DB2存儲過程try catch
0
A
回答
1
DB2 LUW支持用於SQL PL過程的異常處理程序(繼續處理程序或退出處理程序)。查看DB2知識中心獲取所有詳細信息的版本。您可以在條件下使用它們。如果需要特定的處理,可以有多個處理程序。知識中心和DB2 LUW安裝的產品目錄中都有大量示例SQL PL過程。
0
CREATE OR REPLACE PROCEDURE sp_Applicazione_Aggiorna
(
IN @VAR1 INT,
IN @VAR2 INT,
IN @VAR3 VARCHAR(16),
OUT @ReturnCode INTEGER,
)
LANGUAGE SQL
P1: BEGIN
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND
SET @ReturnCode = SQLCODE;
IF not exists (select VAR1 from DB.TABLEA where VAR1 = @VAR1)
THEN
set @ReturnCode = 3011;
ELSE
UPDATE DB.TABLEA SET
[email protected],
[email protected]
WHERE [email protected];
END IF;
END P1
相關問題
- 1. 異常使用TRY CATCH存儲過程
- 2. SQL在try catch塊內重新執行存儲過程
- 3. 如何添加一個Try/Catch到SQL存儲過程
- 4. 要在DB2存儲過程
- 5. 調試DB2存儲過程
- 6. DB2 - 在存儲過程
- 7. DB2更改存儲過程
- 8. db2存儲過程格式
- 9. 帶存儲過程的DB2存儲過程
- 10. Try try-catch-finally
- 11. 解釋Try try; Catch;
- 12. TRY/CATCH_ALL vs try/catch
- 13. TRY CATCH
- 14. 您可以在存儲過程中使用Try Catch來「做」某些內容嗎?
- 15. Try Catch does not catch
- 16. 在DB2中重載存儲過程
- 17. Db2存儲過程結果無
- 18. DB2不允許在存儲過程中
- 19. 存儲過程中的問題:db2
- 20. DB2存儲過程 - 循環訪問值?
- 21. db2存儲過程異常處理
- 22. db2存儲過程創建行爲
- 23. 糾正DB2存儲過程的錯誤
- 24. 從zend調用db2存儲過程
- 25. db2 alter auto increment查詢存儲過程
- 26. DB2存儲過程中的錯誤
- 27. DB2存儲過程剃刀SQL
- 28. SQL Transaction + Try-catch或VB.NET Transaction + Try-catch?
- 29. 的try/catch整個程序
- 30. Try/Multi-Catch vs Single Catch
是啊,我已經看過了。它說,我必須使用sqlstatuscode這是一個特殊的變量來處理錯誤,必須分配給巡迴返回碼變量但它不起作用,這是我的答案的原因。我看過示例代碼,但不適合我。我將sqlstatuscode分配給我的retcode變量,即使我有一個errore,retcode始終是0.我故意嘗試將違反外鍵約束的值分配到我的過程中,但retcode值不會更改。 Db2不會插入值,但我不能處理錯誤 –
發佈您的代碼並詳細說明您的工具鏈。 DB2在您的SQL PL procs和異常處理程序中運行dml/ddl時(用於繼續或錯誤)在您瞭解如何使用它們時正確工作時,會設置SQLCODE變量。 – mao
DB2引發(調用)異常並調用您的處理程序,只有DB2本身發現該錯誤。如果您手動設置SQLCODE,那麼DB2不會作出反應(它會在下一次執行DML/DDL時覆蓋它的值)。對於異常也存在缺省的退出處理程序。 – mao