1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

oracle utl_file包读取数据的实例

2022-11-19 | 数据库 | 1818ip | 479°c
A+ A-

oracle utl_file包相信大家都有一定的了解,下面为您介绍的是oracle utl_file包读取数据的实现方法,如果您对oracle utl_file包方面感兴趣的话,不妨一看。

createorreplacedirectoryMY_DIRas'/usr/test/'; 
createorreplacefunctionf_exportTxt( 
--传入参数 
i_queryinvarchar2, 
i_separatorinvarchar2, 
i_dirinvarchar2, 
i_filenameinvarchar2 
)returnnumber 
is 
/** 
**函数名:f_exportTxt 
**参数:1.i_query查询sql语句;2.i_separator分隔符,默认为','; 
**3.i_dir存放目录;4.i_filename文件名,默认在文件名前加上yyyymmddhh24mi 
**返回:大于等于0即为写入文件记录数,负为异常 
**功能:用户数据抽取,并生成文件到指定目录下 
**备注: 
**作者:lingo 
**修改日期:2010-04-15 
**/ 
--定义参数 
v_fileutl_file.file_type; 
v_theCursorintegerdefaultdbms_sql.open_cursor; 
v_columnValuevarchar2(2000);--临时(列值) 
v_colCntnumberdefault0;--列总数 
v_separatorvarchar2(10)default',';--分隔符,默认为#@ 
v_cntnumberdefault0;--记录总数 
v_filenamevarchar2(100);--时间 
v_statusinteger;--执行SQL后返回状态值 
v_countnumberdefault10000;--每次查询的数量,大于该数量则多次读取数据到游标 
v_tmpnumber;--临时(总记录数,通过SQL统计算出,假如v_cnt不等于v_tmp,则导出有误) 
v_sqlvarchar2(2000);--组合sql语句 
v_loopsnumber;--循环次数 
begin 
--selectto_char(sysdate,'yyyymmddhh24mi')intov_filenamefromdual;--取时间年月日时分做文件名前缀 
v_filename:=''; 
v_filename:=v_filename||i_filename;--组建文件名 
v_sql:='selectcount(''x'')from('||i_query||')';--统计总数 
executeimmediatev_sqlintov_tmp; 
selecttrunc(v_tmp/v_count)intov_loopsfromdual;--循环次数 
ifmod(v_tmp,v_count)>0then 
v_loops:=v_loops+1; 
endif; 
v_file:=utl_file.fopen(i_dir,v_filename,'W');--打开文件 
foriin1..v_loopsloop 
v_sql:='select*from(selectm.*,rownumrfr...... 

本文来源:1818IP

本文地址:https://www.1818ip.com/post/4595.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。