在oracle中通過字段資訊生成xml檔案

2021-05-24 12:33:18 字數 1699 閱讀 6415

一般地,在開發xmlp的時候,我們要先用report builder製作rdf模板,然後上傳rdf到客戶化應用下的reports資料夾下,通過併發請求,輸出xml資料,然後儲存成xml檔案,或者直接將請求輸出的out檔案改字尾為xml,同樣得到輸出資料的xml檔案,接著通重載入xml資料製作rtf模擬,定義資料和模板,再次處理併發請求,以求得到我們想要輸出格式的報表。(其中的詳細過程就不再囉嗦了,想必都已經很熟了)

但是如果我們的開發環境中沒辦法上傳rdf模板的時候,我們就要用其他的辦法輸出得到xml檔案了,這裡是介紹了一種使用plsql通過字段資訊生成xml檔案的方法:

dbms_xmlgen這個程式包是關鍵,有興趣的可以去了解下,它可以根據乙個游標輸出乙個clob格式的xml文字,下面是參考程式:

procedure xml_print(errbuf  out varchar2,

retcode out number) is

ctx      dbms_xmlgen.ctxhandle;

c_result clob;

xmltext  varchar2(5000);

v_source ref_cursor;

line     varchar2(200);

type     ref_cursor is ref cursor;

begin

--定義資料,資料集必須為游標變數

open v_source for

select 1,

2,cursor (select 3,

4from dual

where 1 = 1

union all

select 5,

6from dual

where 1 = 1)

from dual

where 1 = 1;

--定義xml clob檔案

ctx := dbms_xmlgen.newcontext(v_source);

--設定xml檔案標籤

dbms_xmlgen.setrowsettag(ctx,

'header');

dbms_xmlgen.setrowtag(ctx,

'line');

-- generate the clob as a result.

c_result := dbms_xmlgen.getxml(ctx);

/* --直接輸出clob

dbms_output.put_line(c_result);*/

--以文字形式輸出xml檔案

xmltext := substr(c_result);

loop

exit when xmltext is null;

line := substr(xmltext,

1,instr(xmltext,

chr(10)) - 1);

fnd_file.put(fnd_file.output,

line);

xmltext := substr(xmltext,

instr(xmltext,

chr(10)) + 1);

end loop;

dbms_xmlgen.closecontext(ctx);

close v_source;

end xml_print;

上面的輸出格式等自己可以控制,更多的方法可以檢視dbms_xmlgen程式包

oracle通過字段型別查詢字段

有的時候我們需要在oracle中通過欄位名 字段型別 字段長度 字段注釋 表名來查詢具體的字段資訊。比如 昨天同事問我,咱們資料庫裡面有用過blob型別的嗎?我一時也想不起來具體哪個欄位或那張表用了blob型別。於是就用如下語句查詢庫裡面所有字段型別為blob。具體sql如下 select b.co...

在oracle中改變欄位在表中的順序

1.以sys使用者登入oracle 2.查詢你要更改的表,我們 test 中的 aaa 表為列,注意,在oracle中,表和空間都是以大寫字母顯示的,所以這裡都要用大字字母 執行select object id from all objects where owner test and object...

在oracle中建立自動增長字段

oracle在建立表時和其他的資料庫有點不一樣,如sql server可以在int型別的字段後加上 identity 1,1 該字段就會從1開始,按照 1的方式自增,將這個字段設定為主鍵,有利於我們進行資料的插入操作。mysql中可以使用 auto increment 即可。但是oracle有點麻煩...