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生成好 二級節點前面補乙個齡,補兩個零,依...