
SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書いています。
イメージ
sqlplus scott/tiger << EOF
declare
aaa number;
begin
-- *1
select col1 into aaa from test1;
end;
/
-- *2
define a=1
define b=1
@test.sql
EOF
ここで*1にて例えば複数行が返ってくるなどのエラーが
発生した場合、*2以降のSQLを実行せずにSQL*Plusから抜けたいのですが
どのようにすればよいかわかりますでしょうか。
whenever sqlerror exit 255
などはPL/SQL内の論理エラーはハンドリングしてくれないようです。
よろしくお願いします。
それかdefineや@マーク指定によるsqlファイルの取り込みを
PL/SQLの中で実行できる方法を教えていただく方法でも
当方が実施したいことはできるのでそれでもかまいません。
No.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にひっかかって
くれるんですかね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
DATABSE LINKについて
-
ORA-06502のエラー
-
CASE文のエラーについて
-
dmpファイルのインポート時にで...
-
ストアドファンクションの実行
-
sqlのエラーハンドリングについ...
-
ORA-12571パケット書き込みエラ...
-
オラクルエラー
-
PL/SQL PLS-00103エラーについて
-
トリガーのエラー
-
ACCESSでパススルークエリにパ...
-
Oracle 動的SQLでエラー
-
ORA-01843: 指定した月が無効で...
-
【PL/SQL】SQL文が長すぎてSELE...
-
富士通のノートパソコンを使っ...
-
batファイルでのSQL(oracle)...
-
パーティション、未割当ての利...
-
新規表領域の作成について
-
データのインポートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
PL/SQL PLS-00103エラーについて
-
PCC-S-02201エラーの対処を教え...
-
ORA-01843: 指定した月が無効で...
-
はじめまして!
-
「ORA-00907: 右カッコがありま...
-
ORA-06502のエラー
-
無効なSQL文の具体例を教えてく...
-
DATABSE LINKについて
-
シェルスクリプトでオラクルの...
-
PL/SQLでPLS-00201のエラー
-
DBD-oracle(ORACLEドライバ)...
-
データベースのカラムの型がCHA...
-
sqlのエラーハンドリングについ...
-
【PL/SQL】SQL文が長すぎてSELE...
-
ORA-14459: GLOBALキーワードが...
-
PL/SQLのコンパイルエラーにつ...
-
pro*c で pl/sql に変数を渡す...
-
トリガーのエラー
おすすめ情報