Oracle DBおよびPL/SQLは一般的にはかなり素人ですが、Oracle DBとのインタフェースが必要です。Oracle PL/SQLのマルチレベル・コレクションからXMLを生成する
私はマルチレベル・コレクションで出力パラメータを持つPL/SQLストアド・プロシージャがあります。しかし、私はプロシージャを呼び出すと、この
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;
のような標準出力に手動でXMLを生成
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;
をこれは維持するのが非常に面倒です。 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を生成することができます。 –
はい、私は "SELECT ... FROM ..."ステートメントから直接XMLを生成する可能性を見てきました。残念ながら、それは私の場合の選択肢ではありません。 – fawick