SQL Server FOR XML Включающий элемент? - PullRequest
3 голосов
/ 24 марта 2011

Используя SQL Server 2008, у меня есть запрос, который отправляет набор результатов, используя FOR XML. Прямо сейчас это несоответствующий фрагмент.

Как я могу обернуть мой XML-результат во вложенный элемент, а затем поместить простое объявление XML поверх одной ссылки на схему / пространство имен, чтобы сделать вывод совместимым?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 25 марта 2011

Невозможно иметь инструкцию обработки xml в типе данных xml на сервере sql. См. Ограничения типа данных xml

Этот код

declare @XML xml =  
  '<?xml version="1.0"?>
   <root>Value</root>'

select @XML

Имеет выход

<root>Value</root>

Вы можете построить xml как строку с инструкцией обработки xml.

declare @XML xml = '<root>Value</root>'
declare @XMLStr nvarchar(max) = '<?xml version="1.0"?>'

set @XMLStr = @XMLStr + cast(@XML as nvarchar(max))

select @XMLStr

выход

--------------------------------------------------------------------------
<?xml version="1.0"?><root>Value</root>
4 голосов
/ 24 марта 2011

Добавьте «WITH XMLNAMESPACES» в начало и ROOT () в предложение FOR XML:

WITH XMLNAMESPACES ( DEFAULT 'http://namespace_uri_here' )
SELECT * 
FROM TABLE
FOR XML AUTO, ROOT('TopLevel')
...