こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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


以上です。

投稿日時 - 2010-06-12 15:38:55

QNo.5963276

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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

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

投稿日時 - 2010-07-18 08:29:50

補足

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

投稿日時 - 2010-07-20 22:13:25

あなたにオススメの質問