动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.Oracle 数据库向 MS SQL Server .
.FreeBSD-5.2下安装ORACLE9i手记.
.网络关系型数据库的代表Oracle 9i.
.正規表示法.
.学习Linux的七点忠告.
.浅谈Oracle中优化SQL的原则.
.如何在硬碟建置Linux系统之关於虚.
.如何将 Oracle 数据导出到 Excel.
.UNIX下让ORACLE定时执行*.sql文件.
.ORA-01502 state unusable错误成.
.Oracle 10g Release2新功能之变化.
.Oracle9i 数据库管理实务讲座(四).
.oracle联机热备份的原理.
.如何保持Oracle数据库的优良性能.
.ORACLE 应用经验(2).
.oracle概念和术语.
.教你轻松掌握Oracle与SQL Server.
.SQL Server中的Datediff移植到OR.
.Oracle的SQL语句执行效率问题查找.
.使用exp工具进行数据库备份及恢复.

使用utl_file将oracle数据库中数据写入excel文件

发表日期:2008-2-9 |



  
    最近做的一个项目,其中有一块的功能是将数据导出为Excel文件。我使用了Oracle的utl_file程序包。
主要实现思路:
    1、声明一个纪录,用来存储导出的数据;
    2、使用游标取数据到纪录中;
    3、使用utl_file将纪录中的数据写入excel文件;
    4、循环执行步骤2和3,完成数据的导出。
    做的过程中主要碰到的问题:
    1、excle文件中写数据如何写入下一列;
          使用TAB字符完成excel中横向跳格,excel中TAB字符表示单元格的结尾,其中使用了chr()函数,
应用举例如下:
         select U.USER_NAMEchr(9),U.ACCOUNTchr(9) from USER U
                                            例句1
          例句1作为游标的主体,取出的数据每项都包含一个TAB字符,使用utl_file.put()往excel文件中
写数据时会自动跳格
    2、声明的纪录中各项的类型问题
           这个问题的产生主要是在类型的强转化时产生。如例句1种的U.ACCOUNT为number型时,
添加chr(9)时oracle会对进行强转化;当然这里的转化不会有问题(number转化为varchar2),
但是当这种强转换还是会出现问题的,如声明的纪录里某个属性声明为用户自己定义的一种类型,
oracle无法进行转换,则会报错。解决的办法很简单,可以将纪录的属性都声明为varchar类型,但是要注重长度。
    3、导出文件存储路径问题
       utl_file在写文件时,文件的存储路径必须在oracle初始化参数utl_file_dir中设置,
需重起服务才能生效。后来经过查资料发现可以先建立一个Directory,在存储过程中使用它。
建立directory的语句:
create or replace directory FILEPATH as 'path' ";
例句2(注:path为存储文件的路径,如c:\Temp)

    以下是我简单做的处理hr.jobs表数据的存储过程:
      
CREATE OR REPLACE PROCEDURE SP_JOBS_DATA_OUT(
      p_file_name IN VARCHAR2           --***处理文件名称,需包含扩展名(xls用于写excel文件)***--
      ) as
     
   --***定义并声明存储交通资产信息的纪录***--
   --***record_define start***--
    TYPE job_record_type is RECORD(
    job_id hr.jobs.job_id%TYPE,
    job_title hr.jobs.job_title%TYPE,
    min_salary varchar2(30)
    );
    job_rec job_record_type;
   --***record_define end***--
  
  
    --***定义获取job信息的游标***--
   --***cursor_define start***--
    CURSOR c_jobs IS
     select
        job_idchr(9),      --***chr(9)是TAB字符,保证数据输出到EXCEL时能自动换到下一列***--
        job_titlechr(9),
        min_salarychr(9)
    FROM
        hr.jobs;
   --***cursor_define end***--
   
    l_file utl_file.file_type;      --***处理文件操作的句柄***--
 
   
BEGIN
     l_file :=utl_file.fopen('FILEPATH',p_file_name,'w');    --FILEPATH是先于导出前用户建立的存储导出文件的路径
     utl_file.put_line(l_file,'jobs表导出数据');
  
   OPEN c_jobs;
     LOOP 
     FETCH  c_jobs INTO   
            job_rec.job_id  ,
            job_rec.job_title ,
            job_rec.min_salary ;
         EXIT WHEN c_jobs%NOTFOUND;
            utl_file.put(l_file,job_rec.job_id );            --***数据写入excle文件中***--
            utl_file.put(l_file,job_rec.job_title);
            utl_file.put_line(l_file,job_rec.min_salary);
               
     END LOOP;
   CLOSE  c_jobs;
     utl_file.fflush(l_file);
     utl_file.fclose(l_file);
  
   EXCEPTION
     WHEN others THEN
      IF utl_file.is_open(l_file) THEN
         utl_file.fclose(l_file);
       
      END IF;
END;
例句3(注:我的oracle版本为9.2)

这是我第一个blog,可能内容不是很有技术含量的说,但总希望记录一下自己的历程,分享大家的经验。

MSN:lintaowen@hotmail.com

 
上一篇:oracle 在win2000 DOS 下的启动 人气:409
下一篇:Oracle的X$表系列介绍之-X$KSLLCLASS 人气:312
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-19 久溜溜电影系统(免维护+小偷) v5
2008-8-19 晴天免费电影系统完整版(带迅雷采
2008-8-19 Twinklous File Manager v1.5
2008-8-19 千米旅游网站管理系统 v2.0
2008-8-19 资阳人才网 v2.0
2008-8-19 全球商务B2B网站系统 v1.0 asp版
2008-8-19 动域网主机代理管理系统 v1.0
2008-8-19 JH2008-企业网站(全站生成html)
2008-8-19 GlobalEC C2C管理系统 v1.0
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵