Váš výraz XPath zde je "viníkem":
query('//branch')
Toto říká:vyberte vše <branch>
uzly z celého dokumentu. Dělá jen to, co mu říkáte, opravdu...
Co je na tomto dotazu špatného?
SELECT
XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA
To by načetlo všechny <branch>
poduzly pro <book>
uzel, který má type="SF"
jako atribut....
Čeho se snažíte dosáhnout pomocí query()
, exist()
a value()
vše ve stejném prohlášení?? Dost možná to jde udělat mnohem jednodušeji....
Také:Myslím, že si špatně vykládáte to, co .exist()
v SQL Server XQuery ano. Pokud máte své prohlášení zde:
SELECT (some columns)
FROM dbo.TableA
WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1
v podstatě říkáte serveru SQL, aby načetl všechny řádky z dbo.TableA
kde je XML uloženo v XMLData
obsahuje <book type=.....>
uzel - vybíráte řádky z tabulky - NE použití výběru na XMLData
obsah sloupce...