用Oracle的SQL*Plus工具创建HTML页面
作者:Fenng
Oracle的SQLPlus工具有一些比较有趣的选项,合理的使用,能够给我们意想不到的后果。其中有一个”-M”选项能够创建用来创建HTML报表,在实际应用中很有用处。我们先来看看SQLPlus(Oracle 8i)的一些选项:
C:>SQLPLUS -
用法: SQLPLUS [ [
1<option>] [<logon>] [<start>] ]
2
3其中 <option> ::= - | -? | [ [-M <o>] [-R <n>] [-S] ]
4
5<登录> ::= <用户名>[/<口令>][@<connect_string>] | / | /NOLOG
6
7<启动> : : = @<文件名>[.<ext>] [<参数> ...]
8
9"-"显示使用语法
10
11"-?"显示 SQL*Plus 版本标帜
12
13"-M <o>" 使用 HTML 标志选项 <o>
14
15"-R <n>" uses restricted mode <n>
16
17"-S" uses silent mode
18
19”-M”选项指定在输出的时侯使用HTML标记来输出数据,用以代替普通的文本。
20
21
22
23其中”-M”选项的语法如下:
24
25[-M[ARKUP] "HTML [ON|OFF] [HEAD text] [BODY text]
26
27[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]"
28
29
30
31如果我们在实际应用中,要对公司的某个Table进行每个月的报表HTML化,用SQL*Plus的这个特性很容易做到。
32
33
34举例如下:
35
36我们准备对Scott模式下的DEPT表进行处理。DEPT表内容:
37
38
39
40SQL> SELECT * FROM dept;
41
42
43
44DEPTNO DNAME LOC
45
46\---------- -------------- -------------
47
4810 ACCOUNTING NEW YORK
49
5020 RESEARCH DALLAS
51
5230 SALES CHICAGO
53
5440 OPERATIONS BOSTON
55
56
57
58在系统命令行下输出HTML文件:
59
60
61
62将下面几行语句存到一个.sql脚本中(比如说q.sql):
63
64
65
66SET ECHO OFF
67
68SET FEEDBACK OFF
69
70SELECT * FROM dept;
71
72SET ECHO ON
73
74SET FEEDBACK ON
75
76exit
77
78然后在命令行下调用如下命令:
79
80C:\> sqlplus -s -m "HTML ON HEAD DEPT表格之内容" Scott/tiger @c:\q.sql>Dept.html
81
82
83
84对这条命令简单的解释一下:其中”-s”表示silent模式,”-m”表示启用HTML Markup选项,”HEAD DEPT表格之内容”可以用来定制一个简单的标题。然后命令中跟的是数据库用户名字和密码,执行脚本,重定向到Dept.html中。
85
86输出Dept.html有如下内容(空白处已经截去):
87
88
89
90
91
92
93
94在SQL*Plus下输出文件
95
96在SQL*Plus中可以用SET MARKUP命令来做到。
97
98SET MARKUP
99
100用法: SET MARKUP HTML [ON|OFF] [HEAD text] [BODY text]
101
102[ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
103
104
105
106把下面的内存存为一个.sql脚本(比如说C:\q.sql):
107
108
109
110SET ECHO OFF
111
112SET FEEDBACK OFF
113
114SET MARKUP HTML ON SPOOL ON
115
116SPOOL c:\Dept.html
117
118SELECT * FROM dept;
119
120SPOOL OFF
121
122SET MARKUP HTML OFF
123
124SET ECHO ON
125
126SET FEEDBACK ON
127
128
129
130在SQL*Plus中调用,即可创建内容在C:中创建了名为Dept.html的HTML页面,如下图所示:
131
132
133
134
135
136
137
138附:HTML页面输出样例源文件内容
139
140<html>
141<head>
142
143DEPT表格之内容
144
145<meta content="SQL*Plus 8.1.7" name="generator"/>
146</head>
147<body>
148<p>
149<table border="1" width="90%">
150<tr>
151<th>
152
153DEPTNO
154
155</th>
156<th>
157
158DNAME
159
160</th>
161<th>
162
163LOC
164
165</th>
166</tr>
167<tr>
168<td align="right">
169
17010
171
172</td>
173<td>
174
175ACCOUNTING
176
177</td>
178<td>
179
180NEW YORK
181
182</td>
183</tr>
184<tr>
185<td align="right">
186
18720
188
189</td>
190<td>
191
192RESEARCH
193
194</td>
195<td>
196
197DALLAS
198
199</td>
200</tr>
201<tr>
202<td align="right">
203
20430
205
206</td>
207<td>
208
209SALES
210
211</td>
212<td>
213
214CHICAGO
215
216</td>
217</tr>
218<tr>
219<td align="right">
220
22140
222
223</td>
224<td>
225
226OPERATIONS
227
228</td>
229<td>
230
231BOSTON
232
233</td>
234</tr>
235</table>
236<p>
237</p></p></body>
238</html></n></n></o></o></ext></connect_string></n></o></option></start></logon></option>