【发布时间】:2012-02-28 13:40:20
【问题描述】:
总的来说,我对 Oracle DB 和 PL/SQL 非常业余,但仍然需要与 Oracle DB 交互。
我有一个 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;
我调用该过程并像这样在标准输出上手动生成 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>
【问题讨论】: