問合せ結果は、印刷する前にワード・プロセッサで編集する場合、あるいは書状、電子メールまたはその他の文書に挿入する場合、ファイルに格納します。
画面に表示したまま問合せ結果をファイルに格納するには、次の形式でSPOOLコマンドを入力します。
SPOOL file_name
ファイル名の後にピリオドおよび拡張子を指定しない場合、SPOOLを使用すると、ファイル名にデフォルトのファイル拡張子が追加され、そのファイルは出力ファイルとして認識されます。このデフォルトは、オペレーティング・システムによって異なりますが、ほとんどのホストではLSTまたはLISです。/dev/nullや/dev/stderrなどのシステム生成ファイルにスプールする場合、拡張子は追加されません。詳細は、ご使用のオペレーティング・システムのプラットフォーム固有のOracleのマニュアルを参照してください。
次の形式でSPOOLコマンドを入力してスプーリングをOFFにするまで、SQL*Plusでは情報がファイルにスプールされ続けます。
SPOOL OFF
異なるソフトウェア製品間でのデータの移動時に、フラット・ファイル(エスケープ文字、ヘッダーまたは余分な埋込み文字を含まないオペレーティング・システム・ファイル)を使用する必要がある場合があります。たとえば、Oracle Netを使用していない場合、Oracle9iからOracle Database 10gへデータを移行するには、SQL*Loaderで使用できるようにフラット・ファイルを作成する必要があります。
SQL*Plusでフラット・ファイルを作成するには、最初に次のSETコマンドを入力します。
SET NEWPAGE 0 SET SPACE 0 SET LINESIZE 80 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET VERIFY OFF SET HEADING OFF SET MARKUP HTML OFF SPOOL OFF
これらのコマンドの入力後、前述のSPOOLコマンドを使用してフラット・ファイルを作成します。
SET COLSEPコマンドは、列に線を付ける場合に有効です。詳細は、「SET」コマンドを参照してください。
問合せ結果を印刷するには、前述のとおり、結果をファイルにスプールします。その後、SPOOL OFFではなく、次のようにコマンドを入力します。
SPOOL OUT
スプールが停止し、スプールされたファイルの内容がコンピュータの標準(デフォルト)プリンタにコピーされます。SPOOL OUTを使用すると、スプール・ファイルは印刷後に削除されません。
A C M E W I D G E T EMPLOYEE REPORT PAGE: 1 DEPARTMENT LAST NAME MONTHLY SALARY ---------- ------------------------- -------------- 20 Hartstein $13,000 ********** -------------- sum $13,000 80 Russell $14,000 Partners $13,500 ********** -------------- sum $27,500 90 King $24,000 Kochhar $17,000 De Haan $17,000 ********** -------------- sum $58,000 -------------- sum $98,500 COMPANY CONFIDENTIAL 6 rows selected.
例6-26 プリンタへの問合せ結果の出力
最終レポートを生成し、結果をスプールして印刷するには、次のコマンドを含むスクリプトEMPRPTを作成します。
最初に、EDITを使用して、オペレーティング・システムのテキスト・エディタでスクリプトを作成します。
EDIT EMPRPT
次に、テキスト・エディタを使用して次のコマンドをファイルに入力します。
SPOOL TEMP CLEAR COLUMNS CLEAR BREAKS CLEAR COMPUTES COLUMN DEPARTMENT_ID HEADING DEPARTMENT COLUMN LAST_NAME HEADING 'LAST NAME' COLUMN SALARY HEADING 'MONTHLY SALARY' FORMAT $99,999 BREAK ON DEPARTMENT_ID SKIP 1 ON REPORT COMPUTE SUM OF SALARY ON DEPARTMENT_ID COMPUTE SUM OF SALARY ON REPORT SET PAGESIZE 24 SET NEWPAGE 0 SET LINESIZE 70 TTITLE CENTER 'A C M E W I D G E T' SKIP 2 - LEFT 'EMPLOYEE REPORT' RIGHT 'PAGE:' - FORMAT 999 SQL.PNO SKIP 2 BTITLE CENTER 'COMPANY CONFIDENTIAL' SELECT DEPARTMENT_ID, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE SALARY>12000 ORDER BY DEPARTMENT_ID; SPOOL OFF
出力を画面に表示しない場合は、ファイルの始めにSET TERMOUT OFFを追加し、ファイルの終わりにSET TERMOUT ONを追加します。テキスト・エディタでファイルを保存し、終了します(自動的にSQL*Plusに戻ります)。この時点で、次のようにEMPRPTスクリプトを実行します。
@EMPRPT
画面には、次のように出力され(TERMOUTをOFFに設定した場合を除く)、ファイルTEMPにスプールされます。