Временные таблицы

Nata
Дата: 01.02.2001 20:14:31
При использовании временных таблиц нужна проверка на существование данной таблицы для данного пользователя, который мог ранее в сеансе инициировать ее. Как можно узнать имя таблицы чтобы проверить ее существование.
Create table #TMPAktSv (id int)
if exists (select *
from tempdb..sysobjects
where name like '#TMPAktSv%') ... else ...

запрос возвращает имя таблиц=#TMPAktSv___________________________________________________________________________________________________________0000000008B2
Подскажите из чего оно формируется??
AnKa
Дата: 02.02.2001 10:24:37
А по подробнее можно? Чем вызвано такое желание? Временная таблица видна только для того запроса, который ее создал и держит. Так что из других запросов (даже того же пользователя) ты ее не увидишь. Как только запрос отработал - таблица пропадает. Так что опиши проблему подробнее, может тебе необходимо использовать глобальные(##) временные таблицы ?
Павел
Дата: 02.02.2001 10:47:36
Полный бред.
Если речь идет о локальных временных табличках (#) то они автоматически грохаются по завершении работы процедуры, их зоздавшей. Это не касается глобальных (##) и созданных вне процедуры локальных таблиц. А вот пример проверки на существование таблицы:
If object_ID('tempdb..#TempTable') Is not Null
Nata
Дата: 02.02.2001 11:26:11
Спасибо за ответы.
AnKa, насчет использования глобальных временных таблиц то скореее всего так и будет.
Но все равно интересно из чего слагается имя локальной временной таблицы ??????
А насчет подробностей:
Пользователь регистрируется в SQL
Заполняет поля запроса
Запускает процедуру - получает ответ
Меняет параметры - Запускает процедуру - получает ответ
NNNN.......
Выходит из программы.
AnKa
Дата: 02.02.2001 11:53:38
А бес его знает, из чего оно формируется. Сам когда-то разбираля - чуть мозги не поломал. Ната, я так понимаю, тебе необходимо хранить какую-то информацию только на время сеанса пользователя. Подумай, может стоит применить обыкновенную таблицу для всех пользователей с контрольным полем-логин пользователя. Но это подходит, если только у тебя все пользователи уникальны (не могут войти 2 пользователя под одним логином). Еще есть такая фича как @@SPID - уникальный номер сессии. Можно и его использовать. Допустим пользователь коннектится...
1.Сразу определяется его @@SPID.
2.Из таблицы удаляются все записи со значением этого @@SPID в контрольном поле (ведь это мог быть "мусор" с предыдущей сессии с этим же номером, которая уже закрылась).
3.Затем пользователь заполняет и обрабатывает записи только со своим значением @@SPID в контрольном поле. Во время расконнекта можно, конечно удалять после себя мусор, но это не обязательно, так как см. шаг.2.
У меня была похожая ситуация, но у меня уникальность обеспечивается логином пользователя.

Желаю удачи!

ЗЫ. Паша, попей кофейку, успокойся. Не все ж такие умные, как ты. Конференция для того и создана, чтобы люди обменивались опытом, задавали интересующие вопросы, даже если они глупые, с точки зрения других. Все мы учились понемногу чему-небудь, да как-нибудь.
Павел
Дата: 02.02.2001 14:32:27
Рановатр ты меня в умные записал. Как раз кофе я и обпился. Мир, ладно?