sql >> Databasteknik >  >> RDS >> Oracle

Oracle XMLQuery skickar parametervärde

Problemet är strängsammansättningen i XPath. Det gillar inte att du gör ... AR_ITEMS['||lp||']/ITEMS ... .

Du kan skicka värdet på din PL/SQL lp variabel in genom passing sats, som tillåter flera kommaseparerade argument; ge den en identifierare och hänvisa sedan till den direkt i XPath. Jag har fastnat för "lp" och $lp; de behöver inte matcha PL/SQL-variabelns namn, men det kan vara tydligare om de gör det.

      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-loopindexvariabeln lp är ett pls_integer som övergångsklausulen inte gillar; om du skickar det direkt får du ORA-00932, så du måste casta det till nummerdatatypen.




  1. PDO:Databasanslutning på fjärrwebbplats

  2. mysql hur man hittar om minst en rad från korsreferenstabellen är null eller kriterier

  3. Hur installerar man freetds i Linux?

  4. Jämför lista med värden mot tabell