Welnu, uw XPath-uitdrukking hier is de "boosdoener":
query('//branch')
Dit zegt:selecteer alle <branch>
knooppunten uit het hele document. Het is gewoon doen wat je zegt dat het moet doen, echt....
Wat is er mis met deze vraag hier??
SELECT
XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA
Dat zou alle <branch>
. ophalen subnodes voor de <book>
knooppunt met type="SF"
als een attribuut....
Wat probeert u te bereiken met uw query()
, exist()
en value()
allemaal in dezelfde verklaring?? Het is heel goed mogelijk dat het een stuk eenvoudiger kan....
Ook:ik denk dat je verkeerd interpreteert wat .exist()
in SQL Server doet XQuery dat wel. Als je je verklaring hier hebt:
SELECT (some columns)
FROM dbo.TableA
WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1
je vertelt SQL Server eigenlijk om alle rijen op te halen uit dbo.TableA
waar de XML is opgeslagen in XMLData
bevat een <book type=.....>
node - u selecteert rijen uit de tabel - NIET een selectie toepassen op de XMLData
inhoud van de kolom...