Nun, Ihr XPath-Ausdruck hier ist der "Schuldige":
query('//branch')
Hier steht:alle auswählen <branch>
Knoten aus dem gesamten Dokument. Es tut nur, was Sie ihm sagen, wirklich ....
Was ist an dieser Abfrage hier falsch??
SELECT
XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA
Das würde alle <branch>
abrufen Unterknoten für <book>
Knoten mit type="SF"
als Attribut ....
Was versuchen Sie mit Ihrer query()
zu erreichen , exist()
und value()
alles in der gleichen aussage?? Möglicherweise geht es auch viel einfacher....
Außerdem:Ich glaube, Sie interpretieren falsch, was .exist()
ist in SQL Server XQuery tut. Wenn Sie Ihre Aussage hier haben:
SELECT (some columns)
FROM dbo.TableA
WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1
im Grunde weisen Sie SQL Server an, alle Zeilen aus dbo.TableA
abzurufen wobei das XML in XMLData
gespeichert ist enthält einen <book type=.....>
Knoten - Sie wählen Zeilen aus der Tabelle aus - NICHT Anwenden einer Auswahl auf die XMLData
Inhalt der Spalte...