問題は、XPathでの文字列の連結です。 ... AR_ITEMS['||lp||']/ITEMS ...
を実行するのは好きではありません 。
PL/SQLの値を渡すことができますlp
passing
を介して変数を入力します 複数のコンマ区切りの引数を許可する句。識別子を付けて、XPathで直接参照します。使用済みの"lp"
を使い続けました および$lp
; PL / SQL変数名と一致する必要はありませんが、一致する場合はより明確になる可能性があります。
XMLQuery('for $i in distinct-values(/invoice/AR_ITEMS[$lp]/ITEMS/EVENTS/BAL_IMPACTS/DISCOUNT_INFO)
where $i = "Plan499 Corp Disc"
or $i = "Plan899 Corp Disc"
or $i = "Plan1099 Corp Disc"
or $i = "Plan1599 Corp Disc"
return $i' passing original_xmldoc, cast(lp as number) as "lp" returning content ).getStringVal() sys_descr,
PL/SQLループ索引変数lp
pls_integer
です 通過節が気に入らない;これを直接渡すとORA-00932になるため、数値データ型にキャストする必要があります。