oracle中xml如何存储过程,oracle存储过程生成xml文件
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文件相关推荐
- 【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?
♣题目部分 在Oracle中,如何使用STA来生成SQL Profile? ♣答案部分 利用STA对语句进行优化后,STA会对语句进行分析,采用最优的优化策略,并给出优化后的查询计划.可以按照STA给 ...
- oracle中的guid,在Oracle中使用Guid
在Oracle中使用Guid 在Oracle中使用Guid 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g ...
- oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?
oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...
- Oracle中通过:触发器,存储过程,Function调用实现解析Clob字段类型中存储的xml字符串...
摘要:最近项目中用到了存储过程,触发器,Function,由于以前没怎么用过,所以查资料,请教同事,最后总算是把问题解决了,问题是这样的,数据库中有三张表一张是存放从远程服务器获取数据的MBINMSG ...
- Oracle 中重新编译无效的存储过程, 或函数、触发器等对象(转)
Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉.比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它 ...
- oracle中触发器的语法,Oracle 触发器语法及实例
Oracle 触发器语法及实例 Oracle触发器语法(一) 一Oracle触发器语法 触发器是特定事件出现的时候,自动执行的代码块.类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用 ...
- oracle中minus什么意思,Oracle Minus关键字
Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 ...
- oracle中pivot的用法,oracle中pivot的实现原理和用法
考试大Oracle站整理: 1. 11g之前的行列转换面试 领袖又说了:"温故而知新".那就让咱们先看看11g之前是怎么实现地.行列转换一直看成甄别老手和新手的试金石,面试的时候面 ...
- oracle中的循环函数,Oracle日期函数和循环总结
一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...
- Oracle中raise触发异常,Oracle中RAISE异常的解决方法
今天小编给大家分享一篇中RAISE异常的解决方法,感兴趣的朋友跟小编一起来了解一下吧! 有三种方式抛出异常 1.通过PL/SQL运行时引擎 2.使用RAISE语句 3.调用RAISE_APPLICAT ...
最新文章
- micropython esp8266+ssd1306(OLED) 显示中文(示例)
- Java 8 - 02 Lambda Expression
- vue 页面闪烁的问题_vue页面加载闪烁问题的解决方法
- mysql 安装目录说明
- mysql索引有哪些了解_Mysql索引(简单了解)
- android 源码分析notification,# Notification 源码分析
- php将get传参解析成数组,php解析url (parse_url) 参数成数组 (parse_str)
- 怎么解决web service circular reference 问题
- C++基础::函数、类、类型所在的头文件 接口的介绍
- [转]Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
- 05-基础widgets
- 基于jsp+mysql+java+ssm实验室设备管理系统——计算机毕业设计
- Win10删除微软拼音输入法
- python编程作业
- 安卓从入门到进阶第一篇(环境搭建)
- MySQL充电_mysql语法充电
- 起伏激荡的以太网,抱上这条大腿才能乘风破浪
- 攻防世界pwn新手区整理
- manjaro下常用软件一览
- 设计师必备的PPT辅助神器-iSlide