Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle XMLQuery предава стойност на параметър

Проблемът е конкатенацията на низове в XPath. Не му харесва да правиш ... AR_ITEMS['||lp||']/ITEMS ... .

Можете да подадете стойността на вашия PL/SQL lp променлива чрез passing клауза, която позволява множество аргументи, разделени със запетая; дайте му идентификатор и след това се обърнете към него директно в XPath. Останах да използвам "lp" и $lp; те не трябва да съвпадат с името на променливата в PL/SQL, но може да е по-ясно, ако го направят.

      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 цикъл lp е pls_integer което преминаващата клауза не харесва; ако подадете това директно, получавате ORA-00932, така че трябва да го прехвърлите към числовия тип данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изключение ORA-08103:обектът вече не съществува при използване на setfetchsize на Hibernate

  2. ORA-00918:колоната е дефинирана двусмислено, получавам тази грешка

  3. Разделяне на низ на няколко реда в Oracle

  4. Как да включите jar файлове в Java съхранена процедура в Oracle?

  5. Изчислете разликата между 2 дата/часа в Oracle SQL