oracle儲存過程生成xml檔案

2021-12-30 13:15:40 字數 2817 閱讀 7699

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

mark下 declare 定義xml 串 s xmlstr varchar2 420 201701 2017051324123412431 procedurep prm integer pls integer asbegin dbms output.put line prm integer end...

xml文件儲存過程

通用的儲存,來匯入指定目錄下的所有xml文件 create proc p inport path nvarchar 1000 d xml xml檔案所在的目錄 fname nvarchar 1000 要匯入的xml檔名,如果不指定,表示只匯入今天的,如果為 則匯入該目錄下所有的檔案,如果是其他,表示...

利用oracle儲存過程生成樹編碼

字段 描述 備註 id主鍵,32位uuid type code 編碼如 1 01 003 parent id 父節點id,32位uuid sort num 排序編號 正整數假設頂級節點的type code為字元1,寫儲存過程把表中所有的節點type code生成好 二級節點前面補乙個齡,補兩個零,依...