Предложение динамического выбора в SQL Server из XML - PullRequest
1 голос
/ 20 апреля 2010

Я должен запросить представление и включить только те столбцы, которые определены в XML, который входит в качестве параметра для моего SP.Могу ли я включить этот XML в предложение select и извлечь все столбцы, определенные в этом 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

1 Ответ

0 голосов
/ 20 апреля 2010

Я не уверен, почему вы должны это делать, а не позволять клиентскому приложению фильтровать строки для себя, но если вы должны это сделать, вам нужен динамический 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...