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;

oracle中xml如何存储过程,oracle存储过程生成xml文件相关推荐

  1. 【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?

    ♣题目部分 在Oracle中,如何使用STA来生成SQL Profile? ♣答案部分 利用STA对语句进行优化后,STA会对语句进行分析,采用最优的优化策略,并给出优化后的查询计划.可以按照STA给 ...

  2. oracle中的guid,在Oracle中使用Guid

    在Oracle中使用Guid 在Oracle中使用Guid 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g ...

  3. oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?

    oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...

  4. Oracle中通过:触发器,存储过程,Function调用实现解析Clob字段类型中存储的xml字符串...

    摘要:最近项目中用到了存储过程,触发器,Function,由于以前没怎么用过,所以查资料,请教同事,最后总算是把问题解决了,问题是这样的,数据库中有三张表一张是存放从远程服务器获取数据的MBINMSG ...

  5. Oracle 中重新编译无效的存储过程, 或函数、触发器等对象(转)

    Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉.比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它 ...

  6. oracle中触发器的语法,Oracle 触发器语法及实例

    Oracle 触发器语法及实例 Oracle触发器语法(一) 一Oracle触发器语法 触发器是特定事件出现的时候,自动执行的代码块.类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用 ...

  7. oracle中minus什么意思,Oracle Minus关键字

    Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 ...

  8. oracle中pivot的用法,oracle中pivot的实现原理和用法

    考试大Oracle站整理: 1. 11g之前的行列转换面试 领袖又说了:"温故而知新".那就让咱们先看看11g之前是怎么实现地.行列转换一直看成甄别老手和新手的试金石,面试的时候面 ...

  9. oracle中的循环函数,Oracle日期函数和循环总结

    一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...

  10. Oracle中raise触发异常,Oracle中RAISE异常的解决方法

    今天小编给大家分享一篇中RAISE异常的解决方法,感兴趣的朋友跟小编一起来了解一下吧! 有三种方式抛出异常 1.通过PL/SQL运行时引擎 2.使用RAISE语句 3.调用RAISE_APPLICAT ...

最新文章

  1. micropython esp8266+ssd1306(OLED) 显示中文(示例)
  2. Java 8 - 02 Lambda Expression
  3. vue 页面闪烁的问题_vue页面加载闪烁问题的解决方法
  4. mysql 安装目录说明
  5. mysql索引有哪些了解_Mysql索引(简单了解)
  6. android 源码分析notification,# Notification 源码分析
  7. php将get传参解析成数组,php解析url (parse_url) 参数成数组 (parse_str)
  8. 怎么解决web service circular reference 问题
  9. C++基础::函数、类、类型所在的头文件 接口的介绍
  10. [转]Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
  11. 05-基础widgets
  12. 基于jsp+mysql+java+ssm实验室设备管理系统——计算机毕业设计
  13. Win10删除微软拼音输入法
  14. python编程作业
  15. 安卓从入门到进阶第一篇(环境搭建)
  16. MySQL充电_mysql语法充电
  17. 起伏激荡的以太网,抱上这条大腿才能乘风破浪
  18. 攻防世界pwn新手区整理
  19. manjaro下常用软件一览
  20. 设计师必备的PPT辅助神器-iSlide

热门文章

  1. 前端学习(305):bootstrap4之工具方法
  2. 前端学习(148):html和xhtml的区别
  3. 深度学习--Matlab使用LSTM长短期记忆网络对负荷进行分类
  4. JS中的bind()方法
  5. 神经稀疏体素场论文笔记
  6. 2020年计算机视觉学习指南
  7. Javascript与C#中使用正则表达式
  8. GridControl 选择列、复选框全选(上)
  9. Shell 自定义函数
  10. DIY Ruby CPU 分析 Part II