シェルからSQLPLUSを呼び出した際のステータスコードについて
865483Dec 15 2011 — edited Dec 15 2011お世話になります。
シェル(ksh)を使用して、sqlplusからSQL文を発行する処理を作ろうと思っています。
SQL発行時のエラー発生有無をシェル側に返す為、ステータスコード($?)に
値を入れたいと考えていますが、下記方法を試してもステータスコード($?)の値は0のままでした。
・"WHENEVER SQLERROR EXIT FAILURE"を使用する
・PL/SQL側でエラーを感知して、出力引数でフラグを返して、そのフラグをEXITでシェルに返す
ステータスコード($?)に値を設定する手順に不足があるのでしょうか?
SQL*Plus: Release 11.2.0.2.0 Production
-----
【シェル(サンプル)】
PARA1=3
MSG=`sqlplus user_id/pass << EOF
variable numRet number;
exec TEST_EXEC($PARA1,:numRet);
print :numRet;
exit :numRet;
EOF`
echo status:$?
echo MSG:$MSG
-----
【PL/SQL(動作確認用)】
PROCEDURE TEST_EXEC
(
I_INPUT IN NUMBER
, O_OUTPUT OUT NUMBER
) AS
BEGIN
O_OUTPUT := I_INPUT;
END TEST_EXEC;
-----
【実行結果】
status:0
MSG: ~ 略 ~
SQL> SQL> SQL> SQL> SQL> SQL> *3* SQL> Oracl
~ 略 ~