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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看linux的用户

cat /etc/passwd |cut -f 1 -d :转载于:https://www.cnblogs.com/gaohuag/archive/2012/11/28/2792724.html

oracle查看列状态unused,Oracle9i下将列设为UNUSED时的系统行为

下面以例子说话&#xff1a;SQL> create table test1.unused_test as select rownum a,rownum*2 b,rownum*10 c from dba_objects where rownum<100;Table created.看看数据字典&#xff1a;SQL> select column_name,data_type,column_id,hidden_column,segment_colu…

前端学习(603):计算机基础

好久没有学习前端了&#xff0c;开始找找感觉

c++成员变量与构造函数

一、 如果成员变量是对象实体&#xff08;不是指针&#xff09; 例如StudyTool类中有一个Book类的成员变量&#xff0c;StudyTool的构造函数和析构函数均为空函数。 class StudyTool { public:Book book;StudyTool();virtual ~StudyTool();void printBook(); }; 那么在main()方…

oracle开启日志服务,Oralce 归档日志开启与关闭示例

查看oracle数据库是否为归档模式SQL> select name,log_mode from V$database;NAME LOG_MODE------------------ ------------------------TEST NOARCHIVELOGSQL> archive log listDatabase log mode No Archive ModeAutomatic archival DisabledArchive destination USE_…

网络抓包工具--网路岗

绿色压缩包下载下载 转载于:https://www.cnblogs.com/vilyLei/articles/2799400.html

windows cmd后ipconfig后提示不是内部命令或外部命令

出现这样的提示怎么办&#xff1f; cd c:\windows\system32后再次输入ipconfig发现可以使用了 总不能每次使用都cd一下吧&#xff0c;解决方法&#xff1a;在环境变量里&#xff0c;新添加一个Path 路径写c:/windows/system32&#xff0c;就ok了转载于:https://www.cnblogs.com…

php layui 上传文件,laravel使用layui 上传文件 支持pdf上传

控制器&#xff1a;file(file);//获取图片$allowed_extensions ["png", "jpg", "gif","pdf"]; //多类型//图片是否是正规图片if ($file->getClientOriginalExtension()&&!in_array($file->getClientOriginalExtension(…

STL 中map的用法详解

STL 中map的用法详解 Map是STL的一个关联容器&#xff0c;它提供一对一&#xff08;其中第一个可以称为关键字&#xff0c;每个关键字只能在map中出现一次&#xff0c;第二个可能称为该关键字的值&#xff09;的数据处理能力&#xff0c;由于这个特性&#xff0c;它完成有可能在…

php在线模拟高考志愿,高考志愿模拟填报系统

出国留学高考网为大家提供吉林省2018高考志愿模拟填报系统&#xff0c;更多高考资讯请关注我们网站的更新!吉林省2018高考志愿模拟填报系统填报时间5月26日至28日(每天09&#xff1a;00至15&#xff1a;00)。模拟范围取得吉林省2018年高考报名资格的统考考生。(一)登录模拟训练…

firefox addons

webrank searchstatus转载于:https://www.cnblogs.com/haven/archive/2012/12/08/2808388.html

php递归查找树节点,php递归树

核资源。 执行计划改造 MySQL的执行计划是一棵左深树&#xff0c;在并行执行之前&#xff0c;MySQL使用一个线程递归的执行这颗左深树&#xff0c;然后将join结果进行sort或者aggregation。并行的目标就是使用多个线程来并行执行这颗执行计划树。将第一张non-const primary表进…

献给iphone开发的同仁们,同时也给自己做个笔记

192个加分的回答&#xff1a; 有些初学时的做法&#xff0c;现在我认为是不标准的。 1) 有了property&#xff0c;在“私有”的成员变量前面不再使用"_"前缀。如果一个成员变量可以被其他的类访问&#xff0c;那就应该用property。我不喜欢“_”前缀&#xff0c;它会…

linux 编译多个文件,linux gcc编译多个源文件的方法

华为荣耀6 H60-L02&sol;L12(联通版)救砖包【适用于无限重启】本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12(联通版)救砖包[适用于无限重启]说明: 1.本工具包用于华为荣耀6 H60-L02(联通版): ...CMS本质上是什么2015-121.数据可以任意取和构造,结构也…