Spool
SPOOL コマンド
SQLPLUSのコマンド、インプットとアウトプットをファイルに残すコマンド。
SPOOL の構文(CRE, REP, APPは10gからサポートされる)
SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] OFF OUT
SPOOL のファイル名に日付を入れる
SPOOL 出力には固定のファイル名を指定するが定期的に動作するバッチ処理では出力ファイル名に日付を含めたい場合がある。
---- 日付を含む ログを出力する ファイル名 'foo_YYYYMMDD_temp.tmp' column log_date new_value log_date_text noprint select to_char(sysdate,'yyyymmdd') log_date from dual; spool foo_&log_date_text._temp.tmp -- ↑............↑ (&) ~ (.) までが置換される ---- spool off ... プログラム開始 @@foo_script.sql
関連システム変数
アンパサンド(&) マークの設定:DEFINE、 ドット(.) マークの設定:CONCAT
SPOOL 追記書き込みエミュレート Oracle 9i
… 上のスクリプトから続き
@@hoge_script.sql ---- ログを追記モードで書き込む ( 10g 以降であれば SPOOL filename APP を使用する ) host "cat foo_&log_date_text._temp.tmp >> foo_&log_date_text..log" set term on --- 元に戻す必要がある場合、変更したパラメータ値は適宜戻す
cat コマンドは UNIX 系のコマンド Windows 系なら type に相当するもの
Oracle 10g 以上の SQL*Plus であれば標準の SPOOL コマンドのオプション で追記が可能。
Reference:
http://www.shift-the-oracle.com/sqlplus/command/spool.html