这个也许不算什么秘密, 很多人大概都知道, 不过用过的人也许不多.
在8.1.7版本(也许是816? 不太确定)以后, sql*plus中有一个set markup html的命令, 可以将sql*plus的输出以html格式展现.
| SQL> set markup html on spool on SQL> select * from emp where rownum < 3; <br> <p> <table border='1' width='90%' align='center' summary='Script output'> <tr> <th scope="col"> EMPNO </th> <th scope="col"> ENAME </th> <th scope="col"> JOB </th> <th scope="col"> MGR </th> <th scope="col"> HIREDATE </th> <th scope="col"> SAL </th> <th scope="col"> COMM </th> <th scope="col"> DEPTNO </th> </tr> <tr> <td align="right"> 7369 </td> <td> SMITH </td> <td> CLERK </td> <td align="right"> 7902 </td> <td> 17-DEC-80 </td> <td align="right"> 800 </td> <td align="right"> </td> <td align="right"> 20 </td> </tr> <tr> <td align="right"> 7499 </td> <td> ALLEN </td> <td> SALESMAN </td> <td align="right"> 7698 </td> <td> 20-FEB-81 </td> <td align="right"> 1600 </td> <td align="right"> 300 </td> <td align="right"> 30 </td> </tr> </table> <p> |
由于这段代码中没有html文件头, 所以我们可以直接作为内容插入到网页中, 现在我们就可以把这段代码放到下面作为示例:
SQL> /
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
|---|---|---|---|---|---|---|---|
| 7369 | SMITH | CLERK | 7902 | 17-DEC-80 | 800 | 20 | |
| 7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 | 1600 | 300 | 30 |
SQL> spool off
总结: 如果要生成一个完整的html文件, 就使用spool on选项, 如果只是要内容部分(用来添加到一个现有的网页中), 那么就使用spool off选项.
另外, set markup html还有很多选项可以用来定制生成的html的各个部分, 例如head, body, table等, 这里不再逐一说明, 详细信息可以参考SQL*Plus User's Guide and Reference.

