Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Результат for xml path в таблицу SQL  [new]
hks-msk
Member

Откуда:
Сообщений: 19
Есть хранимка формирующая XML файл, вечером джоб загружает xml обратно в БД. Задача записывать сразу результат хранимки в таблицу БД в виде xml

Например:
---Процедура [_Position_today_xml] ---
CREATE procedure [dbo].[_Position_today_xml] as   
select	1 as Tag,
		NULL as Parent,
		NULL as [Position!1],
		NULL as [param!2!ClientCode],
		NULL as [param!2!Quantity]		
	UNION all
	Select										 
		2,										
		1,										
		NULL,
		1,
		2
	for xml explicit

---Таблица [BrokerReportXML] ---

CREATE TABLE [dbo].[BrokerReportXML](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[XMLData] [xml] NULL,
	[CreateDate] [date] NULL
) ON [PRIMARY]

---Попытка записать в [BrokerReportXML] ---
INSERT INTO BrokerReportXML(XMLData) EXEC [dbo].[_Position_today_xml]


Выдает ошибку:
Msg 6819, Level 16, State 5, Procedure _Position_today_xml, Line 8
The FOR XML clause is not allowed in a INSERT statement.


Может кто сможет помочь?
21 фев 17, 17:09    [20234232]     Ответить | Цитировать Сообщить модератору
 Re: Результат for xml path в таблицу SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
CREATE procedure [dbo].[_Position_today_xml] as   
select  1 as [param/@ClientCode],
		2 as [param/@Quantity]
	for xml path('Position'), type
21 фев 17, 17:40    [20234398]     Ответить | Цитировать Сообщить модератору
 Re: Результат for xml path в таблицу SQL  [new]
hks-msk
Member

Откуда:
Сообщений: 19
А в чем в итоге была у меня ошибка?
21 фев 17, 17:54    [20234480]     Ответить | Цитировать Сообщить модератору
 Re: Результат for xml path в таблицу SQL  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
hks-msk
А в чем в итоге была у меня ошибка?
21 фев 17, 17:57    [20234496]     Ответить | Цитировать Сообщить модератору
 Re: Результат for xml path в таблицу SQL  [new]
hks-msk
Member

Откуда:
Сообщений: 19
invm,

Ваш вариант работает, я думал что моя проблема непосредственно в попытки вставки данных из процедуры, а оказалось что в структуре. На самом деле у меня гораздо сложней процедура чем написал я в примере и строится она примерно по такой же схеме как у вас, но вставить результат в таблицу не получается с такой же как и ранее формулировкой(
21 фев 17, 17:58    [20234501]     Ответить | Цитировать Сообщить модератору
 Re: Результат for xml path в таблицу SQL  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
hks-msk
invm,

Ваш вариант работает, я думал что моя проблема непосредственно в попытки вставки данных из процедуры, а оказалось что в структуре. На самом деле у меня гораздо сложней процедура чем написал я в примере и строится она примерно по такой же схеме как у вас, но вставить результат в таблицу не получается с такой же как и ранее формулировкой(


день какой-то.... The FOR XML clause is not allowed in a INSERT statement.
21 фев 17, 18:00    [20234508]     Ответить | Цитировать Сообщить модератору
 Re: Результат for xml path в таблицу SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
hks-msk
На самом деле у меня гораздо сложней процедура чем написал я в примере и строится она примерно по такой же схеме как у вас
Как именно строится?

Можете еще так сделать:
CREATE procedure [dbo].[_Position_today_xml] as   
select * from (
select	1 as Tag,
		NULL as Parent,
		NULL as [Position!1],
		NULL as [param!2!ClientCode],
		NULL as [param!2!Quantity]		
	UNION all
	Select										 
		2,										
		1,										
		NULL,
		1,
		2
        ) t
	for xml explicit
21 фев 17, 23:18    [20235335]     Ответить | Цитировать Сообщить модератору
 Re: Результат for xml path в таблицу SQL  [new]
hks-msk
Member

Откуда:
Сообщений: 19
invm,

Спасибо за помощь, разобрался.
22 фев 17, 10:44    [20236067]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить