我希望能够将 SQL 查询的输出用作 SQL Server 2012 中 XML 查询的参数。这是一个示例。
Declare @xml = (Select uniqueTaxID, taxName
from Taxes
where orderGroup = @someNumber
for xml path('Tax'), root('Taxes'))
预期输出将为我提供订单的所有适用税款。可能有 1 种税或多种税。
示例输出:
<Taxes>
<Tax>
<uniqueTaxID>1</uniqueTaxID>
<taxName>Some Tax</taxName>
</Tax>
<Tax>
<uniqueTaxID>2</uniqueTaxID>
<taxName>Some Other Tax</taxName>
</Tax>
</Taxes>
现在我有另一个简单的 SQL 查询
Select taxID, someItem, @xml.query('
for $i in Taxes/Tax/uniqueTaxID
return Taxes/Tax/taxName
') from someGroupOfItems
不幸的是,它的编写方式,我会得到这两个<taxName>
元素。我需要这是动态的。如果taxID
是 1,那么我希望我的 XML 查询返回Some Tax
,如果是 2,那么它会返回Some Other Tax
。
我试过了:
Select taxID, someItem, @xml.query('
for $i in Taxes/Tax/uniqueTaxID
where $i = ' + taxID + '
return $i')
但这给了我错误
XML 数据类型方法“query”的参数 1 必须是字符串文字。
如果我直接输入数字它可以正常工作,所以我知道它与我连接字符串有关