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

Вопрос:
для меня немного не понятно, почему после создания временной таблицы с использованием динамического запроса, эта таблица тут же удаляется?

Пояснение к скрипту:
Первые два запроса выводят содержимое #tmp, а третий нет :(


declare @STM char(800)

-- Query 1
print 'Query 1'
select top 1 * into #tmp from sysobjects
select * from #tmp
drop table #tmp

-- Query 2
print 'Query 2'
set @STM = 'select top 1* into #tmp from sysobjects select * from #tmp'
exec (@STM)

-- Query 3
print 'Query 3'
set @STM = 'select top 1 * into #tmp from sysobjects'
exec (@STM)
select * from #tmp
10 янв 04, 14:06    [486564]     Ответить | Цитировать Сообщить модератору
 Re: Временные таблицы  [new]
akim2
Member

Откуда: Киев
Сообщений: 115
Временная таблица с одной решеткой, живет только в текущей сессии. Для выполнения exec (@STM) будет создана другая сесия. И после выполнения этого запроса новая сесия удалится вместе с таблицой. Может я че в детадях напутал, но суть, думаю понятна
10 янв 04, 14:13    [486568]     Ответить | Цитировать Сообщить модератору
 Re: Временные таблицы  [new]
OuVe
Guest
Спасибо за ответ...

Я примерно так и думал, но это означает, что если запросы формируются динамически, то использовать (достаточно удобная на мой взгляд возможность) временные таблицы живущие в пределах коннекции нельзя :(.
10 янв 04, 14:22    [486572]     Ответить | Цитировать Сообщить модератору
 Re: Временные таблицы  [new]
akim2
Member

Откуда: Киев
Сообщений: 115
Попробуйте использовать ##
Это глобальные таблицы сервера. И умирают с последней сесией пользователя.
Если добавить туда поле для переменной @@SPID - уникальный номер сесии, то получается красиво. Хотя если у Вас структура временных таблиц неизмена, то лучше создать обычную таблицу. Тогда ее можно будет индексировать и прочие вещи.
10 янв 04, 14:28    [486575]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить