- 締切済み
ストアドプロシージャでのOracle Sqlcodeの環境差異について
ストアドプロシージャでのOracle Sqlcodeの環境差異について <質問詳細> 【事象】 ストアドプロシージャ実行時、Data Not Found時に、ふたつのOracle環境にて 異なる動作がみられました。 (1)環境A(Release 9.2.0.8.0) NotFound時、例外が発生する(SQLCODE=100) (2)環境B(Release 9.2.0.6.0) NotFound時、例外は発生せず、SQLCODEを判断するロジック (下記IF SQLCODE = 0 THEN …)にすすむ。 ※実行したストアドプロシージャはSQLは以下の通り SELECT COLUMN_A, COLUMN_B, COLUMN_C INTO SP_COLUMN_A, SP_COLUMN_B, SP_COLUMN_C FROM TBL1 WHERE COLUMN_D = TBL2_SP_COLUMN_D AND ROWNUM = 1 ORDER BY COLUMN_A; IF SQLCODE = 0 THEN : : ELSE : : END IF; このような動作差異の原因としては何が考えられるでしょうか? <補足> 環境依存によるものでしょうか?(Oracleの初期化パラメータ等) それともコーディング上の問題でしょうか? べからず集などをサイトで調査中ですが、ご教示の程、宜しくお願いします。 以上です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- MeijiK
- ベストアンサー率100% (3/3)
ストアドプロシジャを拝見すると、実際の処理部分しかありませんが EXCEPTIONの定義はどうなっているでしょうか? EXCEPTIONの記述がなかったり、EXCEPTIONでRAISEを使って例外の再呼び出しを しいている場合は上位のブロックに対して例外が起きますが、 EXCEPTIONで例外を処理してしまうと、上位のブロックに 例外は投げられません。それぞれで実行するときに、その部分が違っていたりしませんか?
補足
ご回答ありがとうございます。 ソースを確認します。