• 締切済み

ストアドプロシージャでの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の初期化パラメータ等) それともコーディング上の問題でしょうか? べからず集などをサイトで調査中ですが、ご教示の程、宜しくお願いします。 以上です。

みんなの回答

  • MeijiK
  • ベストアンサー率100% (3/3)
回答No.1

ストアドプロシジャを拝見すると、実際の処理部分しかありませんが EXCEPTIONの定義はどうなっているでしょうか? EXCEPTIONの記述がなかったり、EXCEPTIONでRAISEを使って例外の再呼び出しを しいている場合は上位のブロックに対して例外が起きますが、 EXCEPTIONで例外を処理してしまうと、上位のブロックに 例外は投げられません。それぞれで実行するときに、その部分が違っていたりしませんか?

参考URL:
http://www.shift-the-oracle.com/plsql/exception/exception-when.html
aratani
質問者

補足

ご回答ありがとうございます。 ソースを確認します。

関連するQ&A