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

Откуда:
Сообщений: 11
Всем привет,
столкнулся с проблемой, никак не могу найти ответа.
цель создать динамический шаблон html в табличном виде для отправки писем, столбцы сделал, возникла проблема с вставкой динамических данных.. для этого создаю код с полями
drop table temp;
create table temp (tDate date, Moscow int, Vladivostok int);
insert into temp values ('2017-01-01', 10, 20);
insert into temp values ('2017-01-02', 40, 0);
insert into temp values ('2017-01-03', 10, 1);

declare @sqll nvarchar(MAX), @sqll2 nvarchar(MAX);
set @sqll=('select td=tDate,''''' +STUFF((
												SELECT ',td=' + CAST(sc.name AS VARCHAR(MAX)) + ','''''
												FROM syscolumns sc
												JOIN sysobjects so ON sc.id = so.id
												WHERE so.Name = 'temp'
													and sc.Name<>'tDate'
												FOR XML PATH(''), TYPE 
												).value('.','varchar(max)') 
												,1,0, '' 
												) + ' from temp for xml path(''tr''), type')

exec(@sqll);



после этого запускаю exec(@sqll) получаю результат одну строчку xml, но не могу никак придумать как записать этот результат в переменную... изучал sp_executesq но решения пока не нашел, может быть есть идеи?

Сообщение было отредактировано: 31 июл 17, 22:25
31 июл 17, 21:30    [20689639]     Ответить | Цитировать Сообщить модератору
 Re: результат зароса - xml, записать его в переменную  [new]
Rankatan
Member

Откуда:
Сообщений: 250
create table temp2 (z xml);
insert into temp2
exec(@sqll);
31 июл 17, 23:30    [20689789]     Ответить | Цитировать Сообщить модератору
 Re: результат зароса - xml, записать его в переменную  [new]
Михаил666
Member

Откуда:
Сообщений: 11
Rankatan,
да быть не может :(( полдня убил, где то видел что так не работает и не стал даже пробовать

Спасибо
1 авг 17, 01:07    [20689891]     Ответить | Цитировать Сообщить модератору
 Re: результат зароса - xml, записать его в переменную  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30800
Михаил666
изучал sp_executesq но решения пока не нашел, может быть есть идеи?
Эээ, просто передаёте параметр в sp_executesq
drop table temp;
create table temp (tDate date, Moscow int, Vladivostok int);
insert into temp values ('2017-01-01', 10, 20);
insert into temp values ('2017-01-02', 40, 0);
insert into temp values ('2017-01-03', 10, 1);

declare @sqll nvarchar(MAX), @sqll2 nvarchar(MAX), @xml xml;
set @sqll='select @xml = (select td=tDate,''''' +STUFF((
					SELECT ',td=' + CAST(sc.name AS VARCHAR(MAX)) + ','''''
					FROM syscolumns sc
					JOIN sysobjects so ON sc.id = so.id
					WHERE so.Name = 'temp'
						and sc.Name<>'tDate'
					FOR XML PATH(''), TYPE 
					).value('.','varchar(max)') 
					,1,0, '' 
					) + ' from temp for xml path(''tr''), type)'

exec sp_executesql @sqll, N'@xml xml OUTPUT', @xml=@xml OUTPUT
select @xml 
1 авг 17, 08:45    [20690096]     Ответить | Цитировать Сообщить модератору
 Re: результат зароса - xml, записать его в переменную  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30800
Михаил666
где то видел что так не работает и не стал даже пробовать
Вариант insert into ...
exec(@sqll); неудобен, если что то более сложное, чем простой селект.
1 авг 17, 08:47    [20690099]     Ответить | Цитировать Сообщить модератору
 Re: результат зароса - xml, записать его в переменную  [new]
Михаил666
Member

Откуда:
Сообщений: 11
alexeyvg,
Спасибо!
1 авг 17, 09:40    [20690264]     Ответить | Цитировать Сообщить модератору
 Re: результат зароса - xml, записать его в переменную  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7399
Михаил666,

должна быть функция, а не процедура.
1 авг 17, 11:15    [20690727]     Ответить | Цитировать Сообщить модератору
 Re: результат зароса - xml, записать его в переменную  [new]
fdgnfg
Guest
declare @xml xml

set @xml =
	( select [td]=name, [td]=object_id from sys.tables as tr order by name for xml auto,elements )
 
select @xml
1 авг 17, 16:02    [20692187]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить