समस्या XPath में स्ट्रिंग संयोजन है। आपको ... AR_ITEMS['||lp||']/ITEMS ...
करना पसंद नहीं है ।
आप अपने PL/SQL का मान पास कर सकते हैं lp
passing
. के माध्यम से परिवर्तनशील खंड, जो कई अल्पविराम से अलग किए गए तर्कों की अनुमति देता है; इसे एक पहचानकर्ता दें और फिर उसे सीधे XPath में देखें। मैं इस्तेमाल किए गए "lp"
. में फंस गया हूं और $lp
; उन्हें पीएल/एसक्यूएल चर नाम से मेल खाने की ज़रूरत नहीं है, लेकिन अगर वे ऐसा करते हैं तो यह स्पष्ट हो सकता है।
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 मिलता है, इसलिए आपको इसे नंबर डेटा प्रकार में डालना होगा।