[Oracle] 用 Oracle 的 SQL*Plus 工具創(chuàng)建 HTML 頁(yè)面
作者:Fenng
日期:23-Dec-2003
出處:
http://www.dbanotes.net版本:1.01
Oracle 的 SQL*Plus 工具有一些比較有趣的選項(xiàng),合理的使用,能夠給我們意想不到的后果。其中有一個(gè) ”-M” 選
項(xiàng)能夠創(chuàng)建用來(lái)創(chuàng)建 HTML 報(bào)表,在實(shí)際應(yīng)用中很有用處。我們先來(lái)看看 SQL*Plus的一些選項(xiàng):
-----------------------Oracle8i------Begin------------------------------------------------
C:\>SQLPLUS -
用法 : SQLPLUS [ [<option>] [<logon>] [<start>] ]
其中 <option> ::= - | -? | [ [-M <o>] [-R <n>] [-S] ]
< 登錄 > ::= < 用戶(hù)名 >[/< 口令 >][@<connect_string>] | / | /NOLOG
< 啟動(dòng) > : : = @< 文件名 >[.<ext>] [< 參數(shù) > ...]
"-" 顯示使用語(yǔ)法
"-?" 顯示 SQL*Plus 版本標(biāo)幟
"-M <o>" 使用 HTML 標(biāo)志選項(xiàng) <o>
"-R <n>" uses restricted mode <n>
"-S" uses silent mode
”-M” 選項(xiàng)指定在輸出的時(shí)侯使用 HTML 標(biāo)記來(lái)輸出數(shù)據(jù),用以代替普通的文本。
-----------------------Oracle8i-------------End-------------------------------------------
-----------------------Oracle9i------Begin------------------------------------------------
D:\>sqlplus -
SQL*Plus: Release 9.2.0.4.0 - Production
用法: SQLPLUS [ [<option>] [<logon>] [<start>] ]
其中 <option> ::= -H | -V | [ [-L] [-M <o>] [-R <n>] [-S] ]
<logon> ::= <username>[/<password>][@<connect_string>] | / | /NOLOG
<start> ::= @<URI>|<filename>[.<ext>] [<parameter> ...]
"-H" 顯示 SQL*Plus 的版本標(biāo)幟和使用語(yǔ)法
"-V" 顯示 SQL*Plus 的版本標(biāo)幟
"-L" 只嘗試登錄一次
"-M <o>" 使用 HTML 標(biāo)志選項(xiàng) <o>
"-R <n>" uses restricted mode <n>
"-S" uses silent mode
-----------------------Oracle9i-------------End-------------------------------------------
-----------------------Oracle10G Beta------Begin---------------------------------------
D:\>sqlplus -
SQL*Plus: Release 10.1.0.0.0 - Beta
用法: SQLPLUS [ [<option>] [<logon>] [<start>] ]
其中 <option> ::= -H | -V | [ [-L] [-M <o>] [-R <n>] [-S] ]
<logon> ::= <username>[/<password>][@<connect_string>] | / | /NOLOG
<start> ::= @<URI>|<filename>[.<ext>] [<parameter> ...]
"-H" 顯示 SQL*Plus 的版本標(biāo)幟和使用語(yǔ)法
"-V" 顯示 SQL*Plus 的版本標(biāo)幟
"-C" 兼容性版本 <v>
"-L" 只嘗試登錄一次
"-M <o>" 使用 HTML 標(biāo)志選項(xiàng) <o>
"-R <n>" uses restricted mode <n>
"-S" uses silent mode
-----------------------Oracle10G Beta---END---------------------------------------------
(我們從中也可以看出SQLPlus命令的一些變化,如新的參數(shù)等)
其中 ”-M” 選項(xiàng)的語(yǔ)法如下:
[-M[ARKUP] "HTML [ON|OFF] [HEAD text] [BODY text]
[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]"
如果我們?cè)趯?shí)際應(yīng)用中,要對(duì)公司的某個(gè)Table進(jìn)行每個(gè)月的報(bào)表 HTML 化,用 SQL*Plus 的這個(gè)特性很容易做到。
舉例如下:
我們準(zhǔn)備對(duì) Scott 模式下的 DEPT 表進(jìn)行處理。 DEPT 表內(nèi)容:
SQL> SELECT * FROM dept;
DEPTNO DNAME LOC
---------- ---------------------------- ------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
在系統(tǒng)命令行下輸出 HTML 文件:
將下面幾行語(yǔ)句存到一個(gè) .sql 腳本中(比如說(shuō) q.sql ) :
SET ECHO OFF
SET FEEDBACK OFF
SELECT * FROM dept;
SET ECHO ON
SET FEEDBACK ON
exit
然后在命令行下調(diào)用如下命令:
C:\> sqlplus -s -m "HTML ON HEAD DEPT 表格之內(nèi)容 " Scott/tiger @c:\q.sql>Dept.html
對(duì)這條命令簡(jiǎn)單的解釋一下:其中 ”-s” 表示 silent 模式, ”-m” 表示啟用 HTML Markup 選項(xiàng),
”HEAD DEPT 表格之內(nèi)容 ” 可以用來(lái)定制一個(gè)簡(jiǎn)單的標(biāo)題。然后命令中跟的是數(shù)據(jù)庫(kù)用戶(hù)名字和密碼,
執(zhí)行腳本,重定向到 Dept.html 中。
輸出 Dept.html 有如下內(nèi)容(空白處已經(jīng)截去):
DEPT表格之內(nèi)容
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
在 SQL*Plus 下輸出文件
在 SQL*Plus 中可以用 SET MARKUP 命令來(lái)做到。
SET MARKUP
用法 : SET MARKUP HTML [ON|OFF] [HEAD text] [BODY text]
[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
把下面的內(nèi)容存為一個(gè) .sql 腳本 ( 比如說(shuō) C:\q.sql) :
SET ECHO OFF
SET FEEDBACK OFF
SET MARKUP HTML ON SPOOL ON
SPOOL c:\Dept.html
SELECT * FROM dept;
SPOOL OFF
SET MARKUP HTML OFF
SET ECHO ON
SET FEEDBACK ON
在 SQL*Plus 中調(diào)用,即可創(chuàng)建內(nèi)容。在 C:中創(chuàng)建了名為 Dept.html 的 HTML 頁(yè)面,如下所示:
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
注:由于格式化的問(wèn)題,實(shí)際的顯示效果可能有所不同.