[Oracle] 用 Oracle 的 SQL*Plus 工具创建 HTML 页面

作者:Fenng
日期:23-Dec-2003 
出处:http://www.dbanotes.net
版本:1.01

Oracle 的 SQL*Plus 工具有一些比较有趣的选项,合理的使用,能够给我们意想不到的后果。其中有一个 ”-M” 选
项能够创建用来创建 HTML 报表,在实际应用中很有用处。我们先来看看 SQL*Plus的一些选项:

-----------------------Oracle8i------Begin------------------------------------------------
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 标记来输出数据,用以代替普通的文本。
-----------------------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 的版本标帜和使用语法
"-V" 显示 SQL*Plus 的版本标帜
"-L" 只尝试登录一次
"-M <o>" 使用 HTML 标志选项 <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 的版本标帜和使用语法
"-V" 显示 SQL*Plus 的版本标帜
"-C" 兼容性版本 <v>
"-L" 只尝试登录一次
"-M <o>" 使用 HTML 标志选项 <o>
"-R <n>" uses restricted mode <n>
"-S" uses silent mode
-----------------------Oracle10G Beta---END---------------------------------------------

(我们从中也可以看出SQLPlus命令的一些变化,如新的参数等)

其中 ”-M” 选项的语法如下:

[-M[ARKUP] "HTML [ON|OFF] [HEAD text] [BODY text]

[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]"

如果我们在实际应用中,要对公司的某个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 有如下内容(空白处已经截去):

DEPT表格之内容

DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

在 SQL*Plus 下输出文件

在 SQL*Plus 中可以用 SET MARKUP 命令来做到。

SET MARKUP

用法 : SET MARKUP HTML [ON|OFF] [HEAD text] [BODY text]

[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]

把下面的内容存为一个 .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 页面,如下所示:

DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

注:由于格式化的问题,实际的显示效果可能有所不同.





本文作者

Fenng,某美资公司DBA,业余时间混迹于各数据库相关的技术论坛且乐此不疲。 目前关注如何利用ORACLE数据库有效地构建企业应用。对Oracle tuning、troubleshooting有一点研究。
个人技术站点:http://www.dbanotes.net/ 。 可以通过电子邮件 dbanotes@gmail.com 联系到他。

原文出处

http://www.dbanotes.net/Oracle/Use-SQLPlus-to-Create-HTML.htm

回上页<-|->回首页

All Articles (by Fenng) are licensed under a Creative Commons License.
I would welcome any feedback. Please send questions, comments or corrections to dbanotes@gmail.com
Valid XHTML 4.01 / Valid CSS