私の希望する出力は次のとおりです。
<?xml version="1.0"?>
<Accounts>
<Account>
<variable1>variable1</variable1>
<variable2>variable2</variable2>
<variable3>variable3</variable3>
<variable4>variable4</variable4>
<variable5>variable5</variable5>
<variable6>variable6</variable6>
<Table>
<Row>
<Column1>row1col1</Column1>
<Column2>row1col2</Column2>
<Column3>row1col3</Column3>
</Row>
<Row>
<Column1>row2col1</Column1>
<Column2>row2col2</Column2>
<Column3>row2col3</Column3>
</Row>
<Row>
<Column1>row3col1</Column1>
<Column2>row3col2</Column2>
<Column3>row3col3</Column3>
</Row>
</Table>
</Account>
...
</Accounts>
これから取得する必要のあるSQL関数は、現在アカウントをループし、アカウントIDごとに、変数1、2、テーブルなど、アカウントごとに上記のすべての関連データを収集します。したがって、アカウントIDごとに、すべての変数とテーブルを返します。 3列とすべての行。
したがって、単純化するために、すべてのアカウントIDについて、XMLファイルには上記の構造をファイルに追加する必要があります。これらのさまざまな部分をすべて含むXMLファイルを作成しようとすると、ジレンマが発生します。
最初の問題は、テーブル情報と変数情報を1つのXMLツリーに結合する方法です。テーブルから要素を使用してXMLフォレストを作成することは可能ですが、問題は、アカウントごとに一連の変数データとテーブルがあることです。table_to_xmlを検討しましたが、これはテーブルから直接取得し、table/xmlの前に変数要素を追加する方法がわかりません。
私はテキスト配列を行うことを検討しました:
for rec in execute cmd
loop
cmd:= 'select xmlelement(name "Account",
xmlelement(name "Variable1", '||var1||'))';
execute cmd into vtext
varray[n] := vtext;
n++
end loop;
そして、おそらくテキスト配列としてxmlelementにネストされたテーブルを配置します。すべてが揃うまでネストを続け、すべてが揃ったらXMLに送信します。
次の問題は、これらすべてのアカウントを同じXMLファイル内の1つの包括的な要素に結合することです。
誰かがこれを解決するためにアプローチする方法について何かアイデアを持っているなら、私は助けを大いに感謝します。プロセス全体を考えすぎているように感じます。あるいは、SQLで行うのはばかげすぎて、Pythonなどのスクリプト言語でこれらの操作を試す必要があるかもしれません。