亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2104 | 回復(fù): 0
打印 上一主題 下一主題

oracle存儲(chǔ)過(guò)程生成xml==轉(zhuǎn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-23 02:37 |只看該作者 |倒序?yàn)g覽
我整理了一個(gè)方法
1.創(chuàng)建如下存儲(chǔ)過(guò)程,注意將其中l(wèi)ocation =>'d:\work'之中的目錄改為你本機(jī)的某個(gè)目錄.

create or replace procedure getXML(newContext_qry varchar2,rowSettag varchar2,rowTag varchar2,filename varchar2) is
-- Input query string
-- Input rowsetTag , the root tag
-- Input row level tag
-- Input file name
-- Note make sure that before running this procedure, it is required that UTL_FILE_DIR must
-- be set in init.ora file In this code it has been set to d:\work.
begin
declare
qryCtx dbms_xmlgen.ctxHandle ;
result clob;
lob_length     integer;
read_amount    integer;
read_offset    integer;
buffer         varchar2(100);
loc            varchar2(100) := 'usr_dir';
f_hand         utl_file.file_type;

Begin
        -- Setting up offset and no. of chars to be read in
        -- in one go from clob datatype.
        read_offset := 1;
        read_amount := 75;

        dbms_output.put_line('opening');
        --Opening file
        f_hand := Utl_File.Fopen(location =>'d:\work',
                                 filename =>filename,
                                 open_mode =>'w',
                                 max_linesize => 32767);
        dbms_output.put_line('file open');
        
        -- Creating new context
        qryCtx := dbms_xmlgen.newContext(newContext_qry);
        
        -- Defining Rowsettag
        DBMS_XMLGEN.setRowSetTag(qryCtx,rowSettag);

        -- Defining Rowtag      
        DBMS_XMLGEN.setRowTag(qryCtx,rowTag);

        -- Generating XML and storing in an clob datatype               
        result :=DBMS_XMLGEN.getXML(qryCtx);

        dbms_output.put_line('xml generated');
        
        -- Getting the length of the data stored in Clob
        lob_length := dbms_lob.getlength(result);

        -- Reading data from clob variable and writng into file.
        while (lob_length > 0) loop
        dbms_lob.read(result,read_amount,read_offset,buffer);
        dbms_output.put_line('writing in file');
        utl_file.put(f_hand,buffer);
        dbms_output.put_line('written');
        read_offset := read_offset+read_amount;
        lob_length := lob_length-read_amount;
        if lob_length < read_amount then
           read_amount := lob_length;
        end if;
        end loop;
        utl_file.fclose(f_hand);



        EXCEPTION WHEN UTL_FILE.INVALID_PATH THEN
        RAISE_APPLICATION_ERROR(-20100,'Invalid Path');

        WHEN UTL_FILE.INVALID_MODE THEN
        RAISE_APPLICATION_ERROR(-20101,'Invalid Mode');

        WHEN UTL_FILE.INVALID_OPERATION then
        RAISE_APPLICATION_ERROR(-20102,'Invalid Operation');

        WHEN UTL_FILE.INVALID_FILEHANDLE then
        RAISE_APPLICATION_ERROR(-20103,'Invalid Filehandle');

        WHEN UTL_FILE.WRITE_ERROR then
        RAISE_APPLICATION_ERROR(-20104,'Write Error');

        WHEN UTL_FILE.READ_ERROR then
        RAISE_APPLICATION_ERROR(-20105,'Read Error');

        WHEN UTL_FILE.INTERNAL_ERROR then
        RAISE_APPLICATION_ERROR(-20106,'Internal Error');

        WHEN OTHERS THEN
        UTL_FILE.FCLOSE(f_hand);
        

end;
end;
/

2.修改init.ora參數(shù)文件中的參數(shù)utl_file_dir,將其值指定為和存儲(chǔ)過(guò)程中l(wèi)ocation指定的目錄,如D:\work,重新啟動(dòng)數(shù)據(jù)庫(kù)。

3.登錄后,執(zhí)行類似如下語(yǔ)句
execute getXML('select * from tab','TAB','RECORD','shanfei.xml')
參數(shù)1:SQL語(yǔ)句
參數(shù)2:XML文件中將生成的根元素
參數(shù)3:XML文件中表格每行代表的元素
參數(shù)4:生成的xml文件名稱
生成xml文件內(nèi)容類似如下:
<?xml version="1.0"?>
<tab>
<record>
  <TNAME>ACCOUNTINFO</TNAME>
  <TABTYPE>VIEW</TABTYPE>
</record>
<record>
  <TNAME>ACCOUNTSTATUS</TNAME>
  <TABTYPE>VIEW</TABTYPE>
</record>
......................
......................
</tab>

作者:shanfei

地址:http://www.itpub.net/thread-146048-1-1.html

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP