用Oracle的SQL*Plus工具创建HTML页面
2024-08-29 13:31:08
供稿:网友
用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 [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有如下内容(空白处已经截去):
在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页面,如下图所示:
附: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>