2

エラー コードを示す OUT パラメータを持つストアド プロシージャがあります。エラー コードが 0 でない場合は、エラーを発生させます

DECLARE
BEGIN
 foo (err_code);

 IF (err_code <> 0) THEN
   raise_application_error(...);

END;

ここまでは良いのですが、ここで私の質問です。

このコード (上に表示) は、シェル スクリプトから呼び出される sqlplus によって実行されます。シェル スクリプトは、0 ではなく 0 で終了する必要があります (SQL スクリプトのように)。

#shell script

sqlplus ... @myscript
return $?

raise_application_error が実行されると、制御は sqlplus に戻ります。

sql>

私が欲しいのは、sqlplusが$に0を返さずに、シェルに戻る方法ですか?

何かご意見は?前もって感謝します。

4

2 に答える 2

7

いつでも SQLERROR EXIT 1

于 2010-02-12T20:52:13.443 に答える
0

PL/SQL で発生したアプリケーション エラーが気になる場合は、戻りコードを SQL*Plus 変数として宣言し、戻りコードを PL/SQL プロシージャに設定させることができます。

#shell script

sqlplus /nolog << EOF
connect uid/pw
variable retval number;
BEGIN
  foo (:retval);
END;
/

exit retval;
EOF

return $?
于 2010-02-14T04:41:38.577 に答える