こんにちは私はDB2でデータベースを作成しています。 IBM Data Clientを使用します。私は私のストアドプロシージャにキャッチしようとしますが、それは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 Timer in Try Catch
- 2. ()try {} catch {}
- 3. try catch catch webdriverのカスタムウェイト
- 4. try/try catch関数でR
- 5. Scala DRYing try/catch
- 6. Try-catchリターンメソッド
- 7. JAVA try catch ArrayIndexOutOfBoundsException
- 8. C++プログラミングtry catch
- 9. VBA + Excel + Try Catch
- 10. Elixir Try Catch
- 11. try-catchブロックは
- 12. Javascript try catchステートメント
- 13. TRY..CATCH Error_Line()....行
- 14. Foreach try catch
- 15. try&catch on supplyAsync
- 16. Linuxシェルtry finally catch
- 17. IE、FF try {} catch(){}バグ?
- 18. try-catch not trapping exceptions
- 19. try-catch-finally-return clarification
- 20. のtry/catch構文
- 21. エラーはのtry/catch
- 22. C#Real Time Try Catch
- 23. try..catch VS long if()
- 24. try catch does not working
- 25. のtry/catchがクラス
- 26. アプリケーションのtry..catchブロック
- 27. 違い「のtry-catch」
- 28. C#try Catch文クエリ
- 29. Arduinoのtry/catchブロック
- 30. NodeJS try-catch not blocking
うん、私はすでにそれを見てきました。私は、returncode variabileをツアーに割り当てなければならないエラー処理のための特別なバリバリであるsqlstatuscodeを使用しなければならないと言いますが、これは私の答えの理由です。私はサンプルコードを見ましたが、私のためには動作しません。私はsqlstatuscodeを私のretcode変数に代入しますが、もし私がerroreを持っていてもretcodeは常に0です。私は意図的に私の手続きに外部キー制約に違反する値を代入しようとしますが、retcode値は変わりません。 Db2は値を挿入しませんが、エラーを処理することはできません –
コードを投稿し、ツールチェーン全体を詳細に記述します。 dml/ddlがSQL PL procsで実行され、例外ハンドラ(continueまたはエラーの場合)が使用方法を理解したときにDB2が正しく動作するように、SQLCODE変数を設定します。 – mao
例外を発生させ(呼び出します)、ハンドラを呼び出すのはDB2です。DB2自身だけがエラーを検出します。手動でSQLCODEを設定すると、DB2は反応しません(次のDML/DDL実行時にその値を上書きします)。例外のためのデフォルト出口ハンドラも存在します。 – mao