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

全部博文(109)

文章存档

2011年(1)

2010年(10)

2009年(36)

2008年(62)

我的朋友

分类: Oracle

2009-09-03 16:36:24

测试数据,存储在D:\oracle,文件名为T_PRINTCLOBOUT.XML。


  1
  1
  1
  300

  2
  2
  20
  30

  3
  1
  16
  300

  4
  1
  39
  20
 
SQL> create directory XML_DIR as 'D:\oracle';
目录已创建。
SQL> DECLARE
  2    QRYCTX DBMS_XMLGEN.CTXHANDLE;
  3    dst_loc CLOB;
  4    SAVCTX DBMS_XMLSTORE.CTXTYPE;
  5    N      NUMBER;
  6    src_loc    bfile := bfilename('XML_DIR', 'T_PRINTCLOBOUT.XML');
  7    amt        number := dbms_lob.lobmaxsize;
  8    src_offset number := 1;
  9    dst_offset number := 1;
 10    lang_ctx   number := dbms_lob.default_lang_ctx;
 11    warning    number;
 12    v_exists   PLS_INTEGER := 0;
 13  BEGIN
 14    DBMS_LOB.CREATETEMPORARY(dst_loc, true);--该语句必写,原因不明,否则报错。
 15    DBMS_OUTPUT.PUT_LINE('------------ LOB LOADCLOBFORMFILE EXAMPLE ------------');
 16 
 17    dbms_lob.fileopen(src_loc, dbms_lob.file_readonly);
 18    v_exists := DBMS_LOB.fileexists(src_loc);
 19  ----  用于测试文件名以及路径是否正确
 20    IF v_exists = 0 THEN
 21      dbms_output.put_line('FILE NOT EXIST');
 22    ELSE
 23      dbms_output.put_line('FILE AND DIR VALID');
 24    END IF;
 25  ----将数据从OS文件加载到CLOB变量-------
 26    dbms_lob.LOADCLOBFROMFILE(dst_loc,
 27                              src_loc,
 28                              amt,
 29                              dst_offset,
 30                              src_offset,
 31                              dbms_lob.default_csid,
 32                              lang_ctx,
 33                              warning);
 34    dbms_output.put_line(' Amount specified ' || amt);
 35    dbms_output.put_line(' Number of bytes read from source: ' ||
 36                         (src_offset - 1));
 37    dbms_output.put_line(' Number of characters written to destination: ' ||
 38                         (dst_offset - 1));
 39    if (warning = dbms_lob.warn_inconvertible_char) then
 40      dbms_output.put_line('Warning: Inconvertible character');
 41    end if;
 42    dbms_lob.filecloseall();
 43    DBMS_OUTPUT.PUT_LINE(dst_loc);
 44    --开始设置加载数据的列
 45    SAVCTX := DBMS_XMLSTORE.NEWCONTEXT('ATEMP_090903');
 46    DBMS_XMLSTORE.CLEARUPDATECOLUMNLIST(SAVCTX);
 47    DBMS_XMLSTORE.SETUPDATECOLUMN(SAVCTX, 'CUST_ID');
 48    DBMS_XMLSTORE.SETUPDATECOLUMN(SAVCTX, 'SEX');
 49    DBMS_XMLSTORE.SETUPDATECOLUMN(SAVCTX, 'AGE');
 50    DBMS_XMLSTORE.SETUPDATECOLUMN(SAVCTX, 'DEPOSIT');
 51    N := DBMS_XMLSTORE.INSERTXML(SAVCTX, dst_loc);
 52    DBMS_XMLSTORE.CLOSECONTEXT(SAVCTX);
 53  END;
 54  /
PL/SQL 过程已成功完成。
SQL> commit;
提交完成。
SQL>
阅读(1864) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~