sql >> Database >  >> RDS >> Oracle

Oracle XMLQuery parameterwaarde doorgeven

Het probleem is de aaneenschakeling van strings in de XPath. Het houdt er niet van dat je ... AR_ITEMS['||lp||']/ITEMS ... doet .

U kunt de waarde van uw PL/SQL lp doorgeven variabele in via de passing clausule, die meerdere door komma's gescheiden argumenten toestaat; geef het een identifier en verwijs daar dan rechtstreeks naar in de XPath. Ik heb de gebruikte "lp" gebruikt en $lp; ze hoeven niet overeen te komen met de naam van de PL/SQL-variabele, maar het is misschien duidelijker als ze dat wel doen.

      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,

De PL/SQL-lusindexvariabele lp is een pls_integer waar de passerende clausule niet van houdt; als je dat direct doorgeeft, krijg je ORA-00932, dus je moet het casten naar het datatype nummer.




  1. Dynamisch transponeren voor onbekende rijwaarde naar kolomnaam op postgres

  2. mysql trage zoekopdracht

  3. Detecteer emoticons in string

  4. Hoe kan ik logboekgroei in SQL Server voorkomen bij het invoegen van miljoenen records?