在一个SQL select语句中,我试图将列值注入到Xquery'value'函数的名称空间声明中,如下所示:
select
ResponseAsXML.value('declare namespace ns0="sql:column("subresult.XmlNamespace")";(//ns0:HLLoop1/ns0:TD5/TD503[../../ns0:HL/HL03 = ''S''])[1]', 'varchar(255)') As MyXMLElementVlaue
from
(Select
Cast(ResponseXML As XML) As ResponseAsXML,
Case
When e.MyKey = 2
Then 'http://xxxxx.com/blah1'
When e.MyKey = 3
Then 'http://xxxxx.com/blah2'
Else 'http://xxxxx.com/blah3'
End As XmlNamespace
from
...) subresult
但是我遇到一个错误:
XQuery [trackingnos.ResponseAsXML.value()]:所有序言条目都需要 以“;”结尾,找到“ subresult.XmlNamespace”。
我无法直接(通过串联)包含我的名称空间列,因为我收到一个错误,指出该参数必须是字符串文字。
有什么想法我该怎么做,或者我在这里做错了什么?