• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書)

SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書く方法

このQ&Aのポイント
  • SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書いています。
  • エラーが発生した場合、SQL*Plusから抜ける方法を知りたいです。
  • または、PL/SQL内でdefineや@マーク指定によるsqlファイルの取り込みを実行する方法を教えてほしいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

SQLPLUSで投入したPL/SQL無名ブロック内でのエラーでも、「whenever sqlerror ~」で、 キャッチできますよ。少なくともWindows版SQLPUSは、そういう動作です。 発生源が、SQL文であっても、PL/SQL無名ブロックでも、ORA-nnnnnのエラーを拾わないと 「whenever sqlerror ~」の意味が無いですからね。

whiteline507
質問者

補足

whenever sqlerrorでハンドリングできるのは構文間違いやテーブルが存在しないといった SQL*Plusとしてのエラーが発生したときだけで 二行ヒットや0件ヒットといったPL/SQLとしてEXCEPTION句にハンドリングされるようなエラー はwhenever sqlerrorではハンドリングできずにPL/SQL部のEXCEPTION句内の処理を 実行した後に、その後のSQL部も実行されてしまうのではないでしょうか。 それで困っています。RAISE句などでORAエラーを起こせばwhenever sqlerrorにひっかかって くれるんですかね。

関連するQ&A