日期:2014-05-17  浏览次数:20777 次

使用SQL*PLUS,构建完美excel或html输出(转)

通过SQL*PLUS我们可以构建友好的输出,满足多样化用户需求。   本例通过简单示例,介绍通过sql*plus输出xls,Html两种格式文件.

  首先创建两个脚本:
  1.main.sql
  用以设置环境,调用具体功能脚本

  2.功能脚本-get_tables.sql
  为实现具体功能之脚本

  通过这样两个脚本可以避免spool中的冗余信息.

  示例如下:
  1.main.sql脚本:
[Oracle @jumper utl_file]$ more main.sql
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on PR eformat off
spool tables.xls
@get_tables.sql
spool off
exit
  2.get_tables.sql脚本:
[oracle@jumper utl_file]$ more get_tables.sql
select owner,table_name,tablespace_name,blocks,last_analyzed
from all_tables order by 1,2;
  3.执行并获得输出:
[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @main

SQL*Plus: Release 9.2.0.4.0 - ProdUCtion on Mon Apr 25 10:30:11 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
[oracle@jumper utl_file]$ ls -l tables.xls
-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls
[oracle@jumper utl_file]$

  此处输出为xls文件,通过下图我们可以看到输出效果:
使用SQL*PLUS构建完美excel或html输出   把main.sql脚本中的,spool tables.xls更改为spool tables.htm,我们可以获得htm格式输出,效果如下图:使用SQL*PLUS构建完美excel或html输出

?

?

#main ... 后辍名.xls即excel,后辍名.html即html文件

#生成HTML报表样式:http://download.oracle.com/docs/cd/B14117_01/server.101/b12170/ch8.htm#i1043351

#set markup HTML [ON|OFF] 指定是否生成HTML格式,ON生成,OFF不生成,默认是OFF。

#用SHOW MARKUP命令查看MARKUP操作当前状态:

#HEAD text 指定HTML中HEAD标签中的内容,默认情况下,文本包括级联样式和标题。
#
#BODY text 指定HTML中BODY标签属性
#
#TABLE text
#设置<TABLE>标签的属性,如BORDER, CELLPADDING, CELLSPACING和WIDTH.。默认情况下,<TABLE> 的WIDTH属性设置为90%,BORDER属性设置为1。
#
#ENTMAP {ON|OFF}
#指定在SQL * Plus中是否用HTML字符实体如&lt;, &gt;, &quot; and &amp;等替换特殊字符<, >, " and & 。默认设置是ON。
#
#SPOOL {ON|OFF}
#指定是否在SQL*Plus生成HTML标签<HTML> 和<BODY>, </BODY> 和</HTML>。默认是OFF。
#注:这是一个后台打印操作,只有在生成SPOOL文件生效,在屏幕上并不生效。
#
#PRE[FORMAT] {ON|OFF}
#指定SQL*Plus生成HTML时输出<PRE>标签还是HTML表格,默认是OFF,因此默认输出是写HTML表格。
#
#在生成HTML格式时要设置一些其他操作,列出如下:
#
#SET ECHO {ON|OFF}
#是否显示脚本中正在执行的SQL语句。
#
#SET FEED[BACK] {6|n|ON|OFF}
#是否显示当前sql语句查询或修改的行数。默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数。
#
#SET NEWP[AGE] {1|n|NONE}
#设置页与页之间的分隔。
#当SET NEWPAGE 0 时,会在每页的开头有一个小的黑方框。
#当SET NEWPAGE n 时,会在页和页之间隔着n个空行。
#当SET NEWPAGE NONE 时,会在页和页之间没有任何间隔。
#
#SET NULL text
#显示时,用text值代替NULL值
#
#SET PAGES[IZE] {24|n}
#设置一页有多少行数,如果设为0,则所有的输出内容为一页并且不显示列标题
#
#SET WRA[P] {ON|OFF}
#当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句,设置SET WRAP ON时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。
#
#SET TERM[OUT] {ON|OFF}
#是否在屏幕上显示输出的内容,? 主要用与SPOOL结合使用。设置SET TERMOUT OFF,输出的内容只保存在输出文件中,不会显示在屏幕上,提高了SPOOL输出速度。
#
#SET TRIMS[OUT] {ON|OFF}? 将SPOOL输出中每行后面多余的空格去掉