欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle 存储过程生成xml资料

更新时间: 2014-01-05 02:02:23 责任编辑: Author_N1

 

oracle 存储过程生成xml文件

CREATE OR REPLACE PROCEDURE Pro_OracleToXML(personid varchar2,name varchar2,address varchar2,tel varchar2,ip varchar2,email varchar2)
AS
   isql varchar2(200);--创建临时表
   dptable varchar2(100);--删除临时表
   i_insert varchar2(200);--将数据插入临时表
   tableSource CLOB;
   str varchar2(500);
   xmlFile utl_file.file_type;
   tempsql varchar2(500) ;       --初始的查询语句
   ex    BOOLEAN;--文件是否存在
   flen NUMBER;--文件长度?
   bsize NUMBER;--文件大小

 BEGIN
    --初始化创建临时表语句
    isql:='create global temporary table  people_copy(personid VARCHAR2(4),name varchar2(50),address VARCHAR2(200),tel VARCHAR2(20),fax VARCHAR2(20),email VARCHAR2(100)) on commit delete rows';
    --创建临时表
    execute immediate isql;
    dbms_output.put_line(isql||'执行成功');
    --将触发后的数据插入到people_copy表中
    i_insert := 'insert into people_copy values('''||personid||''','''||name||''','''||address||''','''||tel||''','''||ip||''','''||email||''')';
    --执行插入语句
    execute immediate i_insert;
    --将临时表的查询语句作为值赋给tempsql变量
    tempsql := 'SELECT * FROM people_copy where fax= '''||ip||''' order by personid asc';
    dbms_output.put_line(tempsql);
    --获得内容
    tableSource:=dbms_xmlgen.getXml(tempsql);
    --判断文件是否存在
    utl_file.fgetattr('PEOPLE_FILE_DIR','/'||ip||'.xml', ex,flen,bsize);
    --chr(10)是换行符,
    --chr(13)是回车,
    --replace(replace(tableSource,CHR(10),''),chr(13),'');
    if ex then
      --文件存在,将tableSource的值的<?xml version="1.0"?>替换为空格
      tableSource:=replace(tableSource,'<?xml version="1.0"?>','');
    else
      --文件不存在,不用替换
      dbms_output.put_line('File Does Not Exist');
    end if;
    --打开文件
    xmlFile:=utl_file.fopen('PEOPLE_FILE_DIR','/'||ip||'.xml','A');
    --将tableSource的内容赋给str字符串变量
    str := tableSource||'';
    --去除str前面的空格
    tableSource := trim(leading CHR(10) from str);
    --去除tableSource后面的空格
    tableSource := trim(trailing CHR(10) from tableSource);
    dbms_output.put_line(tableSource);
    --输入tableSource内容到xml文件中
    utl_file.put_line(xmlFile,tableSource);
    --关闭文件
    utl_file.fclose(xmlFile);
    --将删除临时表的语句作为值赋给dptable变量
    dptable :='drop table people_copy';
    --删除临时表
    execute immediate dptable;
  --出现异常,输出异常信息  
  EXCEPTION
    WHEN OTHERS THEN
      dbms_output.put_line(SQLERRM);
 END Pro_OracleToXML;

 

 

create or replace trigger trigger_people
after insert or update on people
referencing
for each row
 
declare
PRAGMA AUTONOMOUS_TRANSACTION;
begin
  dbms_output.put_line(:new.personid||'已经触发了!---');
  Pro_OracleToXML(:new.personid,:new.name,:new.address,:new.tel,:new.fax,:new.email);
end;

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:02:23
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4883/
本文WWW.DOC100.NET DOC100.NET版权所有。