Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > FOR XML PATH + WITH, не работает


Автор: lv151 14.10.2014, 14:11
Код

DECLARE @xml VARCHAR(max) = ''
(
    ;WITH tab1
     AS
     (
         SELECT col1
         FROM table1                
     )
     SELECT * 
     FROM tab1
     FOR XML PATH('item'), ROOT('items')
)

SELECT @xml


Msg 102, Level 15, State 1, Line 3
Incorrect syntax near ';'.
Msg 102, Level 15, State 1, Line 12
Incorrect syntax near ')'.

Возможно ли как-то по другому построить эти выражения?

Автор: Akina 14.10.2014, 14:43
lv151, всегда начинайте вопрос с версии сервера и иных особенностей окружения - это критично.

По сути - как я понимаю, это продолжение попытки навесить голову и хвост к получаемому XML?

Автор: lv151 14.10.2014, 15:04
SQL Server 2008r2.

Цитата(Akina @  14.10.2014,  14:43 Найти цитируемый пост)
По сути - как я понимаю, это продолжение попытки навесить голову и хвост к получаемому XML?

Этот вопрос уже решён ;).

Автор: Akina 14.10.2014, 15:47
Тогда к чему ЭТО страдание? да ещё с кучей синтаксических ляпов?

Автор: lv151 14.10.2014, 16:05
Цитата(Akina @  14.10.2014,  15:47 Найти цитируемый пост)
Тогда к чему ЭТО страдание? да ещё с кучей синтаксических ляпов?

Выгрузить в XML результат этого запроса.
Это никак не относится к навесить голову и хвост.

Автор: Akina 14.10.2014, 17:53
Тогда просто сделай не SELECT, а SELECT INTO, а затем выгрузи в файл получившуюся таблицу.

Автор: lv151 15.10.2014, 08:41
Да, придётся.
Хотел без временных таблиц.

Автор: Akina 15.10.2014, 08:48
Трудненько. Всё упирается в отфонарно генерящееся имя поля. Даже create function returns table не помогает.

Автор: lv151 15.10.2014, 09:46
Цитата(Akina @  14.10.2014,  17:53 Найти цитируемый пост)
SELECT INTO

Я бы лучше это не использовал, лучше обычный INSERT INTO SELECT.

Автор: chupachups 24.12.2014, 12:38
Код

DECLARE @xml VARCHAR(max) = ''

;WITH tab1 AS
(
    SELECT col1
    FROM table1                
)
SELECT @xml = (SELECT *
FROM tab1
FOR XML PATH('item'), ROOT('items'))

SELECT @xml


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/FOR-XML-PATH-WITH-ne-rabotayet-id543d0503ae2015ac2d8b4567#findElement_E7045_549a8978ae2015ad16e212b7_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)