用PlSql导出数据到Excel文件
来源:互联网 发布:淘宝彩妆店铺名字 编辑:程序博客网 时间:2024/05/16 15:40
问题:写一个存储过程(OUT_FILE2XLS)动态的导出Oracle中指定表的数据
Example:
OUT_FILE2XLS('student');则导出student表到STUDENT.XLS文件
OUT_FILE2XLS('course');则导出couse表到COURSE.XLS文件
关键词:动态Sql、数据字典、Plsql文件读写
平台:windows2000,oracle10g
ibeits:ibeits@126.com
解决方案:
写两个Procedure一个完成把传入的数据写入文件,另一个负责根据表名生成数据:
0.在具体实现之前我們创建一个文件存放的目录:
CREATE OR REPLACE DIRECTORY TEST AS 'C:/TEST';
创建一个名为TEST的目录它的路径为'C:/TEST',当然這是数据库所在的文件系统。
1.FILE_WRITE:
功能:把传入的varchar2写入文件中
参数:i_title in varchar2文件名
i_fileMsg in varchar2待写入文件中的内容
i_fileType in varchar2文件类型既文件扩展名(无实际意义)
实现代码:
i_title VARCHAR2,
i_fileMsg VARCHAR2,
i_fileType VARCHAR2
) IS
v_file UTL_FILE.FILE_TYPE; --文件引用
PATH VARCHAR2(1024);
v_fileName VARCHAR2(2048);
BEGIN
PATH:='TEST'; --文件写入的目录名
v_fileName:=i_title||'.'||i_fileType;
IF UTL_FILE.IS_OPEN(v_file) THEN
UTL_FILE.FCLOSE(v_file);
END IF;
v_file := UTL_FILE.FOPEN(PATH, v_fileName, 'w');
UTL_FILE.PUT_LINE(v_file, i_fileMsg);
UTL_FILE.FCLOSE(v_file);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM); --写入数据
IF UTL_FILE.IS_OPEN(v_file) THEN
UTL_FILE.FCLOSE(v_file);
END IF;
END FILE_WRITE;
在這个Procedure中调用UTL_FILE中的UTL_FILE.FOPEN创建文件,UTL_FILE.PUT_LINE写数据到文件。
2.OUT_FILE2XLS
功能:根据的varchar2(表名)生成数据,并调用前面定义的FILE_WRITE把生成的数据写入文件。
参数:tName in varchar2表名
实现代码:
AS
v_fileMsg VARCHAR2(30000) :='';
sqlstr varchar2(1000);
type c_type is ref cursor;
c1 c_type;
r1 varchar2(30);
c2 c_type;
r2 varchar2(1000);
BEGIN
open c1 for 'select COLUMN_NAME from all_tab_columns where TABLE_NAME=upper(:1)' using tName; --动态cursor
sqlstr:='select ';
fetch c1 into r1;
sqlstr:=sqlstr||r1;
loop
fetch c1 into r1;
exit when c1%notfound;
sqlstr:=sqlstr||'||chr(9)||'||r1; --excel数据文件的列之间用一个Tab(chr(9))分隔
end loop;
close c1;
sqlstr:=sqlstr||' from '||tName;
open c2 for sqlstr;
fetch c2 into r2;
if c2%found then
v_fileMsg := v_fileMsg||r2;
end if;
loop
fetch c2 into r2;
exit when c2%notfound;
v_fileMsg := v_fileMsg||chr(10)||r2; --excel的行之间用一个回车(chr(10))分隔
end loop;
FILE_WRITE(upper(tName),v_fileMsg,'XLS'); --调用FILE_WRITE写入文件
CLOSE c2;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
OK 了,在sql plus在运行 exec OUT_FILE2XLS('tableName')文件就生了。('tableName'为你的表名)
- 用PlSql导出数据到Excel文件
- plsql 导出数据到 excel
- plsql查询数据导出到excel步骤
- 用POI导出数据到excel文件
- plsql 导出数据为excel
- C#导出Excel|导出数据到Excel模板文件里
- SQL导出数据到EXCEL文件
- 将页面数据导出到excel文件
- 将页面数据导出到excel文件
- GridView 数据导出到 Excel文件
- SQL导出数据到EXCEL文件
- PHP导出MySQL数据到Excel文件
- PHP导出MySQL数据到Excel文件
- 导出CListCtrl控件数据到Excel文件
- 导出CListCtrl控件数据到Excel文件
- 导出SQLServer数据到Excel文件中
- PHP导出MySQL数据到Excel文件
- PHP导出MySQL数据到Excel文件
- 微软office系列产品介绍(包括Office SharePoint Server 2007等)
- AOL的面试题,看似很简单
- 使用水晶报表11.5 问题 is already open. Do you want to close it?
- 几个正则表达式(1.ZF翻页url:保存其他参数,).
- int、char、double与byte相互转换的程序
- 用PlSql导出数据到Excel文件
- VC++中利用MSXML解析XML文档
- 用SQL*Loader将Excel数据导出到Oracle
- 算法擂台微积分习题问题解答
- ColdFusion学习资料
- How to dev Gstreamer In Windows
- log4j使用指南
- 用例子详细介绍各种字符集编码转换问题(转)
- Linux IA64安装Oracle注意点