Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle XMLQuery przekazująca wartość parametru

Problemem jest konkatenacja ciągów w XPath. Nie podoba ci się, że robisz ... AR_ITEMS['||lp||']/ITEMS ... .

Możesz przekazać wartość swojego lp PL/SQL zmienna przez passing klauzula, która dopuszcza wiele argumentów oddzielonych przecinkami; nadaj mu identyfikator, a następnie odwołaj się do niego bezpośrednio w XPath. Utknąłem używany "lp" i $lp; nie muszą pasować do nazwy zmiennej PL/SQL, ale może być jaśniejsze, jeśli tak.

      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,

Zmienna indeksu pętli PL/SQL lp jest pls_integer których nie podoba się klauzula przekazująca; jeśli zdasz to bezpośrednio, otrzymasz ORA-00932, więc musisz przesłać go do typu danych liczbowych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwersja bazy PL/SQL bez funkcji

  2. Uruchom procedurę składowaną w programie SQL Developer?

  3. vba ODBC daje Nieokreślony błąd, gdy tabela Oracle ma znacznik czasu

  4. Wywołaj funkcję Java z funkcji Oracle

  5. Oracle DBMS_LOB.INSTR i zawiera wydajność