- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書)
SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書く方法
このQ&Aのポイント
- SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書いています。
- エラーが発生した場合、SQL*Plusから抜ける方法を知りたいです。
- または、PL/SQL内でdefineや@マーク指定によるsqlファイルの取り込みを実行する方法を教えてほしいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
SQLPLUSで投入したPL/SQL無名ブロック内でのエラーでも、「whenever sqlerror ~」で、 キャッチできますよ。少なくともWindows版SQLPUSは、そういう動作です。 発生源が、SQL文であっても、PL/SQL無名ブロックでも、ORA-nnnnnのエラーを拾わないと 「whenever sqlerror ~」の意味が無いですからね。
補足
whenever sqlerrorでハンドリングできるのは構文間違いやテーブルが存在しないといった SQL*Plusとしてのエラーが発生したときだけで 二行ヒットや0件ヒットといったPL/SQLとしてEXCEPTION句にハンドリングされるようなエラー はwhenever sqlerrorではハンドリングできずにPL/SQL部のEXCEPTION句内の処理を 実行した後に、その後のSQL部も実行されてしまうのではないでしょうか。 それで困っています。RAISE句などでORAエラーを起こせばwhenever sqlerrorにひっかかって くれるんですかね。