xpath をパラメーターとしてクエリに渡そうとしています。
declare @test as nvarchar(1000) = '(ns1:Book/Authors)[1]'
;with XMLNAMESPACES ('MyNameSpace:V1' as ns1)
select
b.XmlData.value(
'@test'
, 'nvarchar(100)') as QueriedData
from Books b
where b.BookID = '1'
上記のステートメントにより、次のエラーが発生しました。
XQuery [Books.XmlData.value()]: Top-level attribute nodes are not supported
「@test」ではなく、@test として試してみました。そして、次のエラーが発生しました:
The argument 1 of the XML data type method "value" must be a string literal.
「sql:variable(@test)」を使用して試してみたところ、次のエラーが発生しました。
XQuery [Books.XmlData.value()]: A string literal was expected
「sql:variable("@test")」として試してみると、@test の値が QueriedData として表示されますが、これは間違っています。
ここで何が欠けているか教えてください