我必须查询一个视图,并且只包含那些在XML中定义的列,这些列作为我的SP的参数。我可以在select子句中包含该XML并提取该XML中定义的所有列。请告诉你这样做的方法。
XML格式是
<Columns>
<Column Name="CustomerID"/>
<Column Name="CustomerName"/>
<Column Name="Customerstate"/>
</Columns>
我想将这些列放在选择列表中。
SELECT row.value('@Name', 'varchar(200)')
FROM @varXML.nodes('Columns/Column') AS d (row) FROM JobListingDetails
答案 0 :(得分:0)
我不确定为什么要这样做而不是允许客户端应用程序为自己过滤行,但是如果必须这样做,则需要动态SQL:
DECLARE @varXML XML
DECLARE @columnList NVARCHAR(MAX)
SET @varXML =
' <Columns>
<Column Name="CustomerID"/>
<Column Name="CustomerName"/>
<Column Name="Customerstate"/>
</Columns>
'
SET @columnList =
(SELECT row.value('@Name', 'varchar(200)') + ','
FROM @varXML.nodes('Columns/Column') AS d (row)
FOR XML PATH('')
)
--SELECT @columnList
SET @columnList = 'SELECT ' + LEFT(@columnList, LEN(@columnList) - 1) + ' FROM JobListingDetails'
EXEC sp_executesql @columnList