Masalahnya adalah rangkaian string di XPath. Anda tidak suka melakukan ... AR_ITEMS['||lp||']/ITEMS ...
.
Anda dapat meneruskan nilai PL/SQL lp
. Anda variabel masuk melalui passing
klausa, yang memungkinkan beberapa argumen yang dipisahkan koma; berikan pengidentifikasi dan kemudian rujuk itu langsung di XPath. Saya terjebak menggunakan "lp"
dan $lp
; mereka tidak harus cocok dengan nama variabel PL/SQL, tetapi mungkin lebih jelas jika mereka cocok.
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,
Variabel indeks loop PL/SQL lp
adalah pls_integer
yang tidak disukai oleh klausa yang lewat; jika Anda melewatinya secara langsung, Anda mendapatkan ORA-00932, jadi Anda perlu mentransmisikannya ke tipe data angka.