以下に、sqlplus で実行しようとしている SQL スクリプトのテンプレートを示します。
WHENEVER SQLERROR EXIT 1 ROLLBACK
WHENEVER OSERROR EXIT 1 ROLLBACK
BEGIN
-- Doing some Insert
END;
/
INSERT INTO TMP_TABLE VALUES('A', 'B')
COMMIT;
QUIT;
/
このスクリプトは、ローカル システムのファイル (Test1.sql) で使用できます。Windows コマンド ライン コンソールから Oracle に接続して、このクエリを実行しています。cmd で以下の行を入力します。
C:\Users\myself> sqlplus UNAME/PWD@//DB IP:PORT/SID @C:\Users\Test1.sql
(INSERT INTO...)
SQL スクリプトでは、意図的に 1 つのステートメントをセミコロンで終了しませんでした (上記を参照)。上記の手順に従ってこのスクリプトを実行すると、プログラムが正常に実行され、メッセージが出力されます。
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Apr 6 16:50:19 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
PL/SQL procedure successfully completed.
Commit complete.
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64
bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL Navigator ツールで同じ一連のスクリプトを実行すると、以下のエラーが表示されますが、それは正しいです。
[10]: (エラー): ORA-00933: SQL コマンドが正しく終了していません
スクリプトがこのエラーを報告せず、代わりに「コミット完了」などのメッセージを表示する理由がわかりません。
Windows コマンド コンソールを使用して sdlplus を介して同じスクリプトを実行しようとしているときに、コンソールでこのエラーをスローするスクリプトを作成する方法を教えてください。