Execution Plan
3 ORDER BY DEPTNO;
改ページ後、問合せ結果が次のように表示されます。
ACME WIDGET PERSONNEL REPORT 10-JAN-99
DEPARTMENT EMPLOYEE SALARY 10 CLARK $2,450 10 KING $5,000 10 MILLER $1,300 20 SMITH $800 20 ADAMS $1,100 20 FORD $3,000 20 SCOTT $3,000 20 JONES $2,975 30 ALLEN $1,600 30 BLAKE $2,850 30 MARTIN $1,250 30 JAMES $950 30 TURNER $1,500 30 WARD $1,250 14 rows selected.
この時点で、次のようにPAGESIZE、NEWPAGEおよびLINESIZEをデフォルト値にリ セットします。
SQL> SET PAGESIZE 24 SQL> SET NEWPAGE 1 SQL> SET LINESIZE 80
これらの変数の現在の設定値をリスト表示するには、次のようにSHOWコマンドを使用し ます。
SQL> SHOW PAGESIZE pagesize 24 SQL> SHOW NEWPAGE newpage 1
SQL> SHOW LINESIZE linesize 80
SQL*PlusコマンドのSPOOLを使用して、問合せ結果をファイルに格納したり、ご使用のコ
ンピュータのデフォルト・プリンタで印刷することができます。
問合せ結果の格納および印刷 問合せ結果の格納および印刷 問合せ結果の格納および印刷 問合せ結果の格納および印刷
問合せ結果を、印刷する前にワード・プロセッサで編集したり、書状、メモ、またはその他 の文書に挿入する場合は、問合せ結果をファイルに格納します。
問合せ結果を画面に表示したままファイルに格納するには、次の形式でSPOOLコマンドを 入力します。
SPOOL file_name
ファイル名の後にピリオドおよび拡張子を指定しなかった場合、SPOOLはそのファイルを 出力ファイルとして認識するため、ファイル名にデフォルトのファイル拡張子を追加しま す。このデフォルトは、オペレーティング・システムによって異なりますが、ほとんどのホ ストではLSTまたはLISです。詳細は、ご使用のオペレーティング・システム用のOracle インストレーション・ガイドおよび管理者リファレンスを参照してください。
次のようにSPOOLコマンドを入力してスプーリングをOFFにするまで、SQL*Plusは情報 をスプールし続けます。
SPOOL OFF
フラット・ファイルの作成 フラット・ファイルの作成 フラット・ファイルの作成 フラット・ファイルの作成
異なるソフトウェア・プロダクト間でデータを移動するときには、フラット・ファイル(エ スケープ文字、ヘッダーまたは余分な埋込み文字を含まないオペレーティング・システム・
ファイル)を使用する必要がある場合があります。たとえば、Net8を持っていない場合、
Oracle7からOracle8へデータを移動するには、SQL*Loaderで使用できるようにフラット・
ファイルを作成する必要があります。
SQL*Plusでフラット・ファイルを作成するには、最初に次のSETコマンドを入力します。
SET NEWPAGE 0 SET SPACE 0 SET LINESIZE 80 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF
SET MARKUP HTML OFF SPOOL OFF
これらのコマンドを入力した後、前述のようなSPOOLコマンドを使用してフラット・ファ イルを作成します。
SET COLSEPコマンドは、列に線を付けるときに便利です。詳細は、第8章の「SET」コマ
ンドを参照してください。
ファイルへの結果の格納 ファイルへの結果の格納 ファイルへの結果の格納 ファイルへの結果の格納
問合せ結果を画面に表示したままファイルに格納するには、次の形式でSPOOLコマンドを 入力します。
SPOOL file_name
SPOOLコマンドを入力した後に画面に表示されていたすべての情報が、指定したファイル
に格納されます。
プリンタへの結果の出力 プリンタへの結果の出力 プリンタへの結果の出力 プリンタへの結果の出力
問合せ結果を印刷するには、前述のようにして結果をファイルにスプールします。その後、
SPOOL OFFではなく、次のようにコマンドを入力します。
SPOOL OUT
SQL*Plusはスプールを停止し、スプールされたファイルの内容をご使用のホスト・コン
ピュータの標準(デフォルト)プリンタにコピーします。SPOOL OUTでは、スプール・
ファイルは印刷後に削除されません。
例 例例
例4-25 プリンタへの問合せ結果の出力プリンタへの問合せ結果の出力プリンタへの問合せ結果の出力プリンタへの問合せ結果の出力
最終レポートを生成し、結果をスプールして印刷するには、次のコマンドを含む、EMPRPT という名前のコマンド・ファイルを作成します。
最初にEDITを使用して、ご使用のホスト・オペレーティング・システムのテキスト・エ ディタでコマンド・ファイルを作成します。(INPUTおよびSAVEを使用しないでくださ い。これらを使用すると、SQL*Plusはファイルの終わりにスラッシュを追加し、コマンド・
ファイルを2回実行します。1回はセミコロンの結果として実行され、1回はスラッシュに よって実行されます。)
SQL> EDIT EMPRPT
次に、テキスト・エディタを使用して次のコマンドをファイルに入力します。
SPOOL TEMP CLEAR COLUMNS CLEAR BREAKS CLEAR COMPUTES
COLUMN DEPTNO HEADING DEPARTMENT COLUMN ENAME HEADING EMPLOYEE
COLUMN SAL HEADING SALARY FORMAT $99,999 BREAK ON DEPTNO SKIP 1 ON REPORT
COMPUTE SUM OF SAL ON DEPTNO
COMPUTE SUM OF SAL ON REPORT SET PAGESIZE 21
SET NEWPAGE 0 SET LINESIZE 30
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 DEPTNO, ENAME, SAL
FROM EMP
ORDER BY DEPTNO;
SPOOL OUT
出力を画面に表示しない場合は、ファイルの始めにSET TERMOUT OFFを追加し、ファイ ルの終わりにSET TERMOUT ONを追加します。ファイルを保存します(自動的に
SQL*Plusに戻ります)。この時点で、コマンド・ファイルEMPRPTを実行します。
SQL> @EMPRPT
画面には、次のように出力されます(TERMOUTをOFFに設定した場合を除く)。これら は、ファイルTEMPにスプールされ、TEMPの内容がデフォルト・プリンタに出力されま す。
A C M E W I D G E T EMPLOYEE REPORT PAGE: 1 DEPARTMENT EMPLOYEE SALARY -- -- 10 CLARK $2,450 KING $5,000 MILLER $1,300
********** ---sum $8,750 20 SMITH $800 ADAMS $1,100 FORD $3,000 SCOTT $3,000 JONES $2,975
********** ---sum $10,875 COMPANY CONFIDENTIAL A C M E W I D G E T
EMPLOYEE REPORT PAGE: 2 DEPARTMENT EMPLOYEE SALARY -- -- 30 ALLEN $1,600 BLAKE $2,850 MARTIN $1,250 JAMES $900 TURNER $1,500 WARD $1,250
********** ---sum $9,400
********** ---sum $29,025 COMPANY CONFIDENTIAL
Web レポートの作成 レポートの作成 レポートの作成 レポートの作成
SET MARKUPおよびSPOOLコマンド、またはSQLPLUS - MARKUPコマンドを使用して、
SQL*PlusのHTML形式にコード化されたレポートをファイルに出力できます。レポートの
内容は、内部的にはHTMLの<PRE>タグで記述されるため、SQL*Plusで表示されるのと 同じように、Webブラウザで正確に表示されます。これらのコマンドの詳細は、第7章の
「SQLPLUSコマンドでのSQL*Plusの起動」のSQLPLUS -MARKUPコマンド、および第8 章の「SET」のSET MARKUPコマンドを参照してください。
Web レポートの対話型での作成 レポートの対話型での作成 レポートの対話型での作成 レポートの対話型での作成
SET MARKUPコマンドをSQL*Plusセションで対話的に使用し、スプール・ファイルに
HTMLで書き出します。出力結果はWebブラウザで表示できます。HTMLコードをスプー ル・ファイルに書き出しただけでは、SQL*Plusの画面表示は変更されません。
SET MARKUPは、SQL*Plusの出力をHTML形式にコード化することを指定するのみで、
出力ファイルを作成したり、ファイルへの書出しを開始するわけではありません。スプー ル・ファイルの作成、ファイル名の指定およびファイルへの書出しを開始するには、
SQL*PlusのSPOOLコマンドを使用します。SET MARKUP HTML ON SPOOL ONで、
HTML形式にコード化した出力が可能になり、HTML出力をスプールして、HTMLコード でスプール・ファイルに書き出すことができます。
HTML形式にコード化されたファイルを作成する場合は、HTMLファイルの標準拡張子で
ある.html を指定します。そうすると、出力ファイルの種類を簡単に識別でき、また、Web
ブラウザがHTMLファイルを認識し、正しく表示することができます。拡張子を指定しな いと、SQL*Plusのデフォルトのファイル拡張子.lstが使用されます。
最終的なHTMLタグをスプール・ファイルに書き出してファイルをクローズするには、
SPOOL OFF、 EXITまたはSPOOL filenameを使用します。SPOOL filename では、HTML形式 にコード化されたスプール・ファイルが新しく作成されます。
出力ファイルをHTML形式にコード化しないで新しく作成するには、EXITまたはSPOOL OFFを使用して、既存のHTMLスプール・ファイルをクローズし、SET MARKUP HTML OFF SPOOL OFFで、HTML出力とスプーリングをOFFにします。次に、SQL*Plusの
SPOOLコマンドを使用して、カレント・セッションにスプール・ファイルを新しく作成す
ると、ファイルは、HTMLコードではなくプレーン・テキストで出力されます。SET
MARKUPコマンドを使用すると、必要に応じてHTML出力をONまたはOFFにできます。
例例例
例4-26 対話型セッションでの対話型セッションでの対話型セッションでの対話型セッションでのHTMLレポートの作成レポートの作成レポートの作成レポートの作成
HTMLレポートをSQL*Plusの対話型セッションで作成するには、SET MARKUPコマンド を入力します。HTMLの<HEAD>タグには、埋込み型のスタイル・シートまたはその他の 有効なテキストを挿入できます。
SQL> SET MARKUP HTML ON SPOOL ON HEAD '<TITLE>Example</TITLE> <STYLE -
> type="text/css"> <!-- BODY {background: red} --> </STYLE>'
SQL*PlusのSPOOLコマンドを次のように入力して、スプール・ファイル名を指定します。
SQL> SPOOL example.html
SPOOLコマンドの後に入力された文字や標準出力に表示された文字も、スプール・ファイ
ルexample.htmlに書き出されます。
注意注意注意
注意: 1行目の末尾にあるマイナス記号(-)は、SQL*Plusの継続文字で す。
SET MARKUP HTML ON SPOOL ONで、SQL*PlusでのHTML機能が使用可能になり、ス プール・ファイルにHTMLタグで書き出すことができるようになります。SPOOLコマンド は、<HTML>、<HEAD>、<BODY>および<PRE>タグのスプール・ファイルへの書込みを トリガーします。その後のコマンドおよびそれらの出力結果は、ファイルをクローズするま でスプール・ファイルに書き出されます。
次のようにSQL問合せを入力します。
SQL> SELECT EMPNO, ENAME FROM EMP;
SPOOL OFFコマンドを入力します。
SQL> SPOOL OFF
スプール・ファイルexample.htmlに</PRE>、</BODY>および</HTML>タグが、ファイ ルをクローズするまで追加されます。
Webブラウザでexample.htmlをオープンすると、次のように表示されます。
SQL> SELECT EMPNO, ENAME FROM EMP;
EMPNO ENAME --- --- 7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7876 ADAMS EMPNO ENAME --- --- 7900 JAMES 7902 FORD 7934 MILLER 14 rows selected.
SQL> SPOOL OFF