spoolでSQLを出力しない方法と標準出力にSQLを出力する方法
外部ファイルのスクリプトを実行する場合
以下のようなコマンドで実行する場合
sqlplus ${USERNAME}/${PASSWORD}@${SID} @tmp.sql
|
画面へのコマンド出力 |
画面への検索結果出力 |
ファイルへのコマンド出力 |
ファイルへの検索結果出力 |
デフォルト |
x |
o |
x |
o |
set termout OFF |
x |
x |
x |
o |
SET ECHO ON、set termout OFF |
x |
x |
o |
o |
SET ECHO ON |
o |
o |
o |
o |
- set termout OFFで画面への出力抑止
- デフォルトでは実行コマンド非表示
- 「SET ECHO ON」で実行コマンドを表示
- デフォルトでは、実行結果を画面に出力
- 「SET TERMOUT OFF」で実行結果を非表示
- 「SET SERVEROUTPUT ON」でDBMS_OUTPUT.PUT_LINEからの出力を表示(オマケ)
外部ファイルのスクリプトを実行、サイレントオプションあり
以下のようなコマンドで実行する場合
sqlplus -s ${USERNAME}/${PASSWORD}@${SID} @tmp.sql
|
画面へのコマンド出力 |
画面への検索結果出力 |
ファイルへのコマンド出力 |
ファイルへの検索結果出力 |
デフォルト |
x |
o |
x |
o |
set termout OFF |
x |
x |
x |
o |
SET ECHO ON、set termout OFF |
x |
x |
x |
o |
SET ECHO ON |
x |
o |
x |
o |
ヒアドキュメント or 対話形式で実行する場合
以下のようなコマンドで実行する場合
- sqlplus ${USERNAME}/${PASSWORD}@${SID} << EOT
- sqlplus ${USERNAME}/${PASSWORD}@${SID} << EOT > /dev/null
- sqlplus -s ${USERNAME}/${PASSWORD}@${SID} << EOT
|
画面へのコマンド出力 |
画面への検索結果出力 |
ファイルへのコマンド出力 |
ファイルへの検索結果出力 |
1. |
x |
o |
o |
o |
2. |
x |
x |
o |
o |
3. |
x |
o |
x |
o |
※setでいろいろ設定しても変わらない
スクリプト実行でかつ「-s」オプションがない場合には、「set echo on」を書くとコマンドの出力が有効になる。この場合「-- 文字列」と、コメントを書くだけで画面表示・ファイル出力可能なので、ちょっとした文字列の出力に便利。
一方「-s」オプションつきでの実行や、ヒアドキュメント化して実行する場合には「set echo on」が使えない。簡単なメッセージを表示したい場合には以下のようにするといい。
SET HEADING OFF
SELECT 'メッセージ内容' FROM dual;
SET HEADING ON
ただし、デフォルトの状態では、結果の前後に空白行が出力される為、やけに改行の多い出力結果になりかねない。これを防ぎたい場合には
SET NEWPAGE NONE
SET FEEDBACK OFF
を追加することで結果の前後の空白行を削除できる。
2011/09/16 |