用Oracle的SQL*Plus工具創建HTML頁面
2024-08-29 13:49:24
供稿:網友
用Oracle的SQL*Plus工具創建Html頁面
作者:Fenng
Oracle的SQL*Plus工具有一些比較有趣的選項,合理的使用,能夠給我們意想不到的后果。其中有一個”-M”選項能夠創建用來創建HTML報表,在實際應用中很有用處。我們先來看看SQL*Plus(Oracle 8i)的一些選項:
C:/>SQLPLUS -
用法: SQLPLUS [ [<option>] [<logon>] [<start>] ]
其中 <option> ::= - -? [ [-M <o>] [-R <n>] [-S] ]
<登錄> ::= <用戶名>[/<口令>][@<connect_string>] / /NOLOG
<啟動> : : = @<文件名>[.<ext>] [<參數> ...]
"-"顯示使用語法
"-?"顯示 SQL*Plus 版本標幟
"-M <o>" 使用 HTML 標志選項 <o>
"-R <n>" uses restricted mode <n>
"-S" uses silent mode
”-M”選項指定在輸出的時侯使用HTML標記來輸出數據,用以代替普通的文本。
其中”-M”選項的語法如下:
[-M[ARKUP] "HTML [ONOFF] [HEAD text] [BODY text]
[ENTMAP {ONOFF}] [SPOOL {ONOFF}] [PRE[FORMAT] {ONOFF}]"
假如我們在實際應用中,要對公司的某個Table進行每個月的報表HTML化,用SQL*Plus的這個特性很輕易做到。
舉例如下:
我們預備對Scott模式下的DEPT表進行處理。DEPT表內容:
SQL> SELECT * FROM dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OperaTIONS BOSTON
在系統命令行下輸出HTML文件:
將下面幾行語句存到一個.sql腳本中(比如說q.sql):
SET ECHO OFF
SET FEEDBACK OFF
SELECT * FROM dept;
SET ECHO ON
SET FEEDBACK ON
exit
然后在命令行下調用如下命令:
C:/> sqlplus -s -m "HTML ON HEAD DEPT表格之內容" Scott/tiger @c:/q.sql>Dept.html
對這條命令簡單的解釋一下:其中”-s”表示silent模式,”-m”表示啟用HTML Markup選項,”HEAD DEPT表格之內容”可以用來定制一個簡單的標題。然后命令中跟的是數據庫用戶名字和密碼,執行腳本,重定向到Dept.html中。
輸出Dept.html有如下內容(空白處已經截去):
在SQL*Plus下輸出文件
在SQL*Plus中可以用SET MARKUP命令來做到。
SET MARKUP
用法: SET MARKUP HTML [ONOFF] [HEAD text] [BODY text]
[ENTMAP {ONOFF}] [SPOOL {ONOFF}] [PRE[FORMAT] {ONOFF}]
把下面的內存存為一個.sql腳本(比如說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中調用,即可創建內容在C:中創建了名為Dept.html的HTML頁面,如下圖所示:
附:HTML頁面輸出樣例源文件內容
<html>
<head>
DEPT表格之內容
<meta name="generator" content="SQL*Plus 8.1.7">
</head>
<body>
<p>
<table border="1" width="90%">
<tr>
<th>
DEPTNO
</th>
<th>
DNAME
</th>
<th>
LOC
</th>
</tr>
<tr>
<td align="right">
10
</td>
<td>
ACCOUNTING
</td>
<td>
NEW YORK
</td>
</tr>
<tr>
<td align="right">
20
</td>
<td>
RESEARCH
</td>
<td>
DALLAS
</td>
</tr>
<tr>
<td align="right">
30
</td>
<td>
SALES
</td>
<td>
CHICAGO
</td>
</tr>
<tr>
<td align="right">
40
</td>
<td>
OPERATIONS
</td>
<td>
BOSTON
</td>
</tr>
</table>
<p>
</body>
</html>