我對Oracle數據庫和PL/SQL有相當的業餘愛好,但仍然需要與Oracle DB進行接口。從Oracle PL/SQL多級集合中生成XML
我有一個PL/SQL存儲過程,其具有一輸出參數,該參數是多級集合:
declare
TYPE level_a_type IS RECORD
(
text varchar2(6),
data number
);
TYPE level_a_table IS TABLE of level_a_type INDEX BY PLS_INTEGER;
TYPE level_b_type IS RECORD
(
value number,
included_table level_a_table
);
TYPE level_b_table IS TABLE of level_b_type INDEX BY PLS_INTEGER;
我所說的程序,並在stdout手動生成XML這樣
set serveroutput on
declare
result level_b_type;
n integer;
begin
n := mypackage.mystoredprocedure(result);
FOR i IN 1 .. result.count LOOP
dbms_output.putline('<levelb value="'||result(i).level_b_value||'" >');
FOR k IN 1 .. result(i).included_table.count LOOP
dbms_output.putline('<levela text="'||result(i).included_table(k).text||'" data="'||result(i).included_table(k).data||" '/>');
END LOOP;
dbms_output.putline('</levelb>');
END LOOP;
end;
然而,這是非常麻煩的維護。那麼,有沒有PL/SQL的快捷方式來做類似XML_gen(result)
這樣的事情,將回溯到level_b_table
並自動生成這樣的東西?
<levelb value="1">
<levela text="Hello" data="1" />
<levela text="World" data="2" />
</levelb>
我不認爲有一個簡單和容易的方法來從上面的多級集合生成XML。你可以在表格中訪問這些數據嗎?如果是的話,可以使用一些SQL函數來生成XML。 – 2012-02-28 13:54:48
是的,我已經看到了直接從「SELECT ... FROM ...」語句生成XML的可能性。不幸的是,這不是我的情況。 – fawick 2012-02-28 14:01:32