SQL*Plus の入力コマンドや実行結果を画面に出力するだけでなくファイルにも出力させるには、SPOOL(短縮形はSPO)コマンドを使用する。これにより、SQL 操作のエビデンスを残すことができる。SPOOL とは「糸巻き車」の意味である。
SQL*Plus の入力内容と出力結果をファイルに出力する。
SPOOL filename[.ext] [ CREATE | REPLACE | APPEND ]
SQL*Plus の入力内容と出力結果をファイルに出力しない。
SPOOL OFF
以下に示す引数とオプションを SPOOL コマンドに指定できる。
SQL> spool sqlplus
SQL> spool sqlplus.txt
SQL> spool sqllog create
CREATE オプションの短縮形は CRE である。
SQL> spo sqlplus cre
SQL> spool sqlplus replace
REPLACE オプションの短縮形は REP である。
SQL> spo sqlplus rep
SQL> spool sqlplus append
APPEND オプションの短縮形は APP である。
SQL> spo sqlplus app
SQL> spool off
ファイルの出力先はカレントディレクトリとなる。
任意のディレクトリを出力先とするには、出力先ファイルを絶対パスで指定する。
SPOOL C:\Users\tsuka\example.txt
Oracle SQL*Plusの出力結果を既存のファイルに追記するには、SPOOLコマンドにAPPENDオプションを指定して実行する。
SPOOL example APPEND
SPOOLコマンドの引数にファイル名を指定して実行すると、それ以降の出力がファイルに書き込まれます。なお、指定したファイル名に .lst という拡張子が自動的に付けられます。
SQL> spool sqllog
上記のコマンドを実行した後の出力は、画面に表示されると共に sqllog.lst というファイルにも書き込まれます。
SPOOLコマンドの引数に OFF を指定して実行すると、出力結果のファイルへの書き込みを終了します。
SQL> spool off
現在のスプール状態を確認するには、SHOW SPOOLコマンドを実行します。
SQL> show spool
spool OFF
SQL>
出力先のファイル名に日付を含めるには、事前定義済変数の_DATEを利用する。
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD_HH24MISS';
SQL> SPOOL example-&_DATE..log
SQL*Plus の実行結果を画面に出力する際には、見やすいように改ページされる。実行結果をファイルへ出力するときに改ページが不要であれば、SET コマンドで PAGESIZE を 0 に設定する。ページサイズをゼロに設定すると、ヘッダー、ページ・ブレーク、タイトル、初期空白行及びその他の書式設定情報をすべて非表示にできる。
SQL> set pagesize 0
SQL> spol sqlplus
問い合わせ結果のヘッダを表示しないようにするには、SET コマンドで HEADING を OFF に設定する。
SQL> set heading off
SQL> spool sqlplus
SQLまたはPL/SQL文が正常に実行された後に表示される確認メッセージ(「表が作成されました。」、「PL/SQLプロシージャが正常に完了しました。」など)を非表示にするには、SET コマンドで FEEDBACK を OFF に設定する。
SQL> set feedback off
SQL> spool sqlplus