Execute in Table variable
aleks_k
Дата: 10.10.2003 12:04:34
Всем привет
Хочу результат выполнения команды EXECUTE sp_executesql @SQLStr поместить в переменную типа таблица. Чтото типа этого:
DECLARE @mytable TABLE (id int)
INSERT @mytable
EXECUTE sp_executesql 'SELECT pk FROM table'
Влоб не получается, можно ли какими-то изысками все таки это сделать?
Временные таблицы при этом не использовать!!!
snake
Дата: 10.10.2003 12:08:10
openquery?
Желаю удачи!
iSestrin
Дата: 10.10.2003 12:14:01
>Временные таблицы при этом не использовать!!!<
святая наивность, табличные переменные есть ни что иное, как временная таблица, разница только синтаксическая
buser
Дата: 10.10.2003 12:21:49
сразу в переменную не получится... можно во вр-ю таблицу...
buser
Дата: 10.10.2003 12:23:32
либо как snake сказал... но зачем?
aleks_k
Дата: 10.10.2003 12:35:56
Хочу по возможности исключить дисковые операции.
Насчет того, что переменная типа таблица есть временная таблица - сильно сомневаюсь. Уж больно они рекомендуют использовать ее взамен временных таблиц, цитата из booksonline: "Use table variables instead of temporary tables, whenever possible"
Glory
Дата: 10.10.2003 12:43:52
Хочу по возможности исключить дисковые операции.
А вы думаете, что раз она названа переменной, то она только в памяти находится ???
Так это не так, она хоть и переменная, но таблица. И размещается в базе tempdb.
Найдите отличия в результататх вывода двух запросов
select * from tempdb..sysobjects
go
declare @t table(f1 int)
select * from tempdb..sysobjects |
|
iSestrin
Дата: 10.10.2003 12:45:42
рекомендуют, чтобы мс сиквел не был так похож на ремаркированный сайбейс, ну и возможно # в последующих версиях хотят выкосить ...
вообще, откуда им (табличным переменным) еще взяться, как не из темпдб?
выполни такой простой опыт (3 раза) - станет понятнее:
declare @t table (id int)
select * from tempdb..sysobjects where xtype='u'
кстати, из того же топика:
>Transactions involving table variables last only for the duration of an update on the table variable. Thus, table variables require less locking and logging resources. < - очень сомнительное высказывание, ибо тестирование не выявило ни малейшего различия.
aleks_k
Дата: 10.10.2003 13:02:41
Спасибо всем
Пример от iSestrin убедил
Вывод:это одно и тоже.
Glory
Дата: 10.10.2003 13:05:22
Вывод:это одно и тоже.
Если насчет где и как хранится, то да, одно и тоже.
А вот другие отличия все же есть - например на таблицы переменные не влияют транзакции.