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

Откуда:
Сообщений: 569
Допустим я выполняю код:

exec (<dynamic code>)

Как сохранить резалтсет в табличку без ее предварильного создания ?
Есть годное решение, но я не могу использовать OPENROWSET.

Microsoft SQL Server 2012(sp1)
17 дек 15, 18:48    [18574499]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
Crimean
Member

Откуда:
Сообщений: 13147
если есть шанс - попробовать забрать результат как XML
17 дек 15, 19:32    [18574693]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
_human
Member

Откуда:
Сообщений: 569
Crimean,
Есть пример ?
18 дек 15, 12:00    [18577281]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
Владислав Колосов
Member

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

Вы создаете себе трудности, а, затем, их преодолеваете? Откажитесь от динамического запроса.
18 дек 15, 12:19    [18577419]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
_human
Member

Откуда:
Сообщений: 569
Владислав Колосов,

Да, так и прийдется сделать если не найду решения
18 дек 15, 12:25    [18577461]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
_human
Member

Откуда:
Сообщений: 569
Собсна проблема в том что я не знаю какого типа данные вернутся.
Я могу предварительно создать таблицу с полем типа SQL_VARIANT.
Возможно ли определить какой тип данных находится в SQL_VARIANT поле ?
18 дек 15, 15:42    [18578951]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
Glory
Member

Откуда:
Сообщений: 104751
_human
Собсна проблема в том что я не знаю какого типа данные вернутся.

А что вы собрались делать с результатом неизвестной структуры ?
18 дек 15, 15:45    [18578987]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
_human
Member

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

Мне нужно узнать только тип возвращаемого поля. Далее это будет использоваться в выборке
18 дек 15, 15:55    [18579070]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
Glory
Member

Откуда:
Сообщений: 104751
_human
Мне нужно узнать только тип возвращаемого поля.

Если вы не знаете, чего и сколько возвращает неизвестный скрипт, то каком "типе поля" вы ведете речь ?
18 дек 15, 15:57    [18579084]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
_human
Member

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

Да, чуть напутал.

давайте я перейду к другому вопросу.

declare @sql nvarchar(max);

declare @SourceTable sysname = 'databases';
declare @SourceSchema sysname = 'sys';
declare @SourceColumn sysname = 'name';

set @sql = '
	select distinct
	'+ @SourceColumn + ' as ColName
	into #result
	from ' + @SourceSchema+'.'+@SourceTable+ '

	select * from #result
'
exec sp_executesql @sql

select * from #result --error


Как вурнуть данные из временной таблицы вне динамического кода ?
18 дек 15, 16:14    [18579191]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
Glory
Member

Откуда:
Сообщений: 104751
_human
Как вурнуть данные из временной таблицы вне динамического кода ?

Никак. Потому что ваша временная таблица автоматически удаляется после завершения пакета, а котором была создана.

Что-то неправильно в логике вашей задачи.
18 дек 15, 16:19    [18579236]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
СТУДЕНТ123
Guest
_human
Glory,

Да, чуть напутал.

давайте я перейду к другому вопросу.

declare @sql nvarchar(max);

declare @SourceTable sysname = 'databases';
declare @SourceSchema sysname = 'sys';
declare @SourceColumn sysname = 'name';

set @sql = '
	select distinct
	'+ @SourceColumn + ' as ColName
	into #result
	from ' + @SourceSchema+'.'+@SourceTable+ '

	select * from #result
'
exec sp_executesql @sql

select * from #result --error


Как вурнуть данные из временной таблицы вне динамического кода ?


declare @sql nvarchar(max);

declare @SourceTable sysname = 'databases';
declare @SourceSchema sysname = 'sys';
declare @SourceColumn sysname = 'name';

set @sql = '
	select distinct
	'+ @SourceColumn + ' as ColName
	into ##result
	from ' + @SourceSchema+'.'+@SourceTable+ '
'
exec sp_executesql @sql

select * from ##result --NO error

DROP TABLE ##result
Если это будет делать каждый клиент, то имя временной таблицы генерируйте для каждого уникальное, честно говоря плохая затея.
18 дек 15, 16:22    [18579251]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения  [new]
Maxx
Member [скрыт]

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

не надо пітаться написать универсальную процедуру для всего насвете - уже 1к раз пробовали... получаетсья минимум не оптимально,хреново сопровождаемо,нечитабельно ++ куча гимора никому не нужного. Бросьте ету затею пока не поздно
18 дек 15, 16:39    [18579394]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить