ठीक है, यहाँ आपका XPath व्यंजक "अपराधी" है:
query('//branch')
यह कहता है:सभी . चुनें <branch> पूरे दस्तावेज़ से नोड्स। यह वही कर रहा है जो आप इसे करने के लिए कह रहे हैं, वास्तव में....
यहाँ इस क्वेरी में क्या गलत है??
SELECT
XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA
यह सभी <branch> . को पुनः प्राप्त करेगा <book> . के लिए सबनोड्स नोड जिसमें type="SF" . है एक विशेषता के रूप में....
आप अपने query() . के साथ क्या हासिल करने की कोशिश कर रहे हैं? , exist() और value() सभी एक ही बयान में ?? बहुत संभव है, इसे बहुत आसान तरीके से किया जा सकता है....
साथ ही:मुझे लगता है कि आप गलत व्याख्या कर रहे हैं कि .exist() SQL सर्वर में XQuery करता है। अगर आपका बयान यहां है:
SELECT (some columns)
FROM dbo.TableA
WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1
आप मूल रूप से SQL सर्वर को dbo.TableA . से सभी पंक्तियों को पुनः प्राप्त करने के लिए कह रहे हैं जहां XML XMLData . में संग्रहीत है इसमें एक <book type=.....> . है नोड - आप तालिका से पंक्तियों का चयन कर रहे हैं - नहीं XMLData में चयन लागू करना कॉलम की सामग्री...