sql >> Database teknologi >  >> RDS >> Oracle

Oracle XMLQuery overfører parameterværdi

Problemet er strengsammenkædningen i XPath. Det kan ikke lide, at du laver ... AR_ITEMS['||lp||']/ITEMS ... .

Du kan videregive værdien af ​​din PL/SQL lp variabel ind gennem passing klausul, som tillader flere kommaseparerede argumenter; giv den en identifikator og henvis derefter til den direkte i XPath. Jeg har brugt "lp" og $lp; de behøver ikke at matche PL/SQL-variabelnavnet, men det kan være tydeligere, hvis 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-løkkeindeksvariablen lp er et pls_integer som passeringssætningen ikke kan lide; hvis du sender det direkte, får du ORA-00932, så du skal caste det til nummerdatatypen.




  1. Indstilling af klassesti for en Java-lagret procedure i Oracle

  2. Filtrering af forskellige rækker i SQL

  3. hvordan man viser tilsvarende post fra adgang baseret på anden kolonne i Datagrid i vb6

  4. Tag kontrol over dine data med Microsoft Access