実行・開発環境
Oracle Express Edition 11.2.0.2.0
やりたいこと
batからキックしたsqlのログを残す
呼び出し用バッチファイル
pushd %0\.. sqlplus TESTUSER1/P @sql\output.sql pause
output.sql
col id for a10 col note for a10 spool output.log select * from t_table1; spool off exit
結果(×) - output.log
ID NOTE ---------- ---------- 2 テスト 2 テスト
原因
原因は、システム変数 ECHO のデフォルトが OFF だったため。
システム変数 ECHO とは
@、@@またはSTARTを使用して実行するスクリプトでコマンドをエコー表示するかどうかを制御します。 ONを指定すると、画面にコマンドが表示されます。 OFFを指定すると、非表示になります。 ECHOは、対話方式で入力するコマンドまたはオペレーティング・システムからSQL*Plusにリダイレクトするコマンドの表示には影響しません。
対応
sqlに「set echo on」を追記する。
呼び出しbat
pushd %0\.. sqlplus TESTUSER1/P @sql\output.sql pause
sql\output.sql
col id for a10 col note for a10 set echo on spool output.log select * from t_table1; spool off exit
結果(○) - output.log
SQL> select * from t_table1; ID NOTE ---------- ---------- 2 テスト 2 テスト SQL> spool off