Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3583538
  • 博文数量: 109
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 2457
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-18 19:04
文章分类

全部博文(109)

文章存档

2011年(1)

2010年(10)

2009年(36)

2008年(62)

我的朋友

分类: Oracle

2009-09-10 11:09:36

首先说明,用很多工具都可以实现数据导出为XML文件,比如pl/sql developer中就可以把查询结果导出为csv,tsv,html,xml,sql文件,但是用存储过程实现的好处是,可以定时的导出。


SQL> create or replace directory exp_dir as 'e:\oracle';

目录已创建。

SQL> /

目录已创建。

SQL> create or replace procedure table2xml(result   in out nocopy clob,
  2                                           filename in varchar2) is
  3    xmlstr  varchar2(32767);
  4    line    varchar2(2000);
  5    fhandle utl_file.file_type;
  6  begin
  7    fhandle := utl_file.fopen('EXP_DIR', filename, 'w');
  8    xmlstr  := dbms_lob.substr(result, 32767);
  9    loop
 10      exit when xmlstr is null;
 11      line := substr(xmlstr, 1, instr(xmlstr, chr(10)) - 1);
 12      dbms_output.put_line('| ' || line);
 13      utl_file.put_line(fhandle, line);
 14      xmlstr := substr(xmlstr, instr(xmlstr, chr(10)) + 1);
 15    end loop;
 16    utl_file.fclose(fhandle);
 17  end;
 18  /

过程已创建。

SQL> declare
  2    queryctx dbms_xmlquery.ctxType;
  3    result   clob;
  4  begin
  5    queryctx := dbms_xmlquery.newContext('select username from all_users where username<>''SYSTEM
'' and username<>''SCOTT''');
  6    result   := dbms_xmlquery.getXML(queryctx);
  7    table2xml(result, 'table2xml.xml');
  8    dbms_xmlquery.closeContext(queryctx);
  9  end;
 10  
 11  /

PL/SQL 过程已成功完成。

SQL>

生成的table2xml.xml文件内容为


  
      SEGMENT_STUDY
  

  
      CDCPUB
  

  
      OWBIVY
  

  
      OWBIVY_10_2_0_3_33
  

  
      OWB6
  

  
      OWBRT_SYS
  

  
      OWB_10_2_0_3_33
  

  
      MGMT_VIEW
  

  
      HRPAY
  

  
      SQLSTUDY
  

  
      HEALTH
  

  
      SYSMAN
  

  
      RMAN
  

  
      BI
  

  
      PM
  

  
      SH
  

  
      IX
  

  
      OE
  

  
      HR
  

  
      OWB5
  

  
      MDDATA
  

  
      MDSYS
  

  
      SI_INFORMTN_SCHEMA
  

  
      ORDPLUGINS
  

  
      ORDSYS
  

  
      OLAPSYS
  

  
      ANONYMOUS
  

  
      XDB
  

  
      CTXSYS
  

  
      OWB_LIU
  

  
      EXFSYS
  

  
      WMSYS
  

  
      DBSNMP
  

  
      TSMSYS
  

  
      DMSYS
  

  
      DIP
  

  
      OUTLN
  

  
      SYS
  

  
      GLOBAL
  



阅读(1154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~