Подскажите как можно проверить существование временной таблица
условите такого типа:
если ##Table2 существует, тогда drop table ##Table2
иначе ....
Как можно проверить существование таблицы
Viktor Zull, СУБД какая? В стандарте 99-го года зарезервировано ключевое слово exists.
Я знаю два варианта использования:
и
Наверняка есть и ещё 
Я знаю два варианта использования:
Код: Выделить всё
drop table if exists ##table2;
Код: Выделить всё
if exists (select 1 from tempdb.dbo.sysobjects where id = object_id('##table2'))
drop table ##table2

Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
СУБД MS SQL Server, думаю что первый вариант подойдет. Первый код я понимаю: удалить таблицу если она существует, а вот второй не совсем, немогли бы вы пояснить его
Как раз наоборот
Может 2000-й и поймёт первый вариант, но что-то я сумлеваюсь
А справки под рукой нет.
По второму поясняю: EXISTS проверяет возращаемый запросом резалсет на непустоту.
Записи обо всех объектах базы при их создании заносятся в системную таблицу sysobjects. Временные таблицы сосдаются в системной базе под названием tempdb. Владелец системной таблицы всегда dbo. ID объекта определяется при помощи системной функции object_id.


По второму поясняю: EXISTS проверяет возращаемый запросом резалсет на непустоту.
Записи обо всех объектах базы при их создании заносятся в системную таблицу sysobjects. Временные таблицы сосдаются в системной базе под названием tempdb. Владелец системной таблицы всегда dbo. ID объекта определяется при помощи системной функции object_id.
Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 117
- Зарегистрирован: 10 ноя 2005, 02:00
Проверил оба варианта первый что-то не работает, показывает синтаксическую ошибку. Со вторым запрос запускается но похоже таблица не удаляется. Мне вот что нужно сделать:
--Сначала проверить существует ли таблица ##Table2 и если существует удалить ее:
if exists (select 1 from tempdb.dbo.sysobjects where id = object_id('##table2'))
drop table ##table2
--Если не существует тогда выполнить:
select pole1,pole2,pole3 into ##Table2
from TableX
where(...)
--Сначала проверить существует ли таблица ##Table2 и если существует удалить ее:
if exists (select 1 from tempdb.dbo.sysobjects where id = object_id('##table2'))
drop table ##table2
--Если не существует тогда выполнить:
select pole1,pole2,pole3 into ##Table2
from TableX
where(...)
М-дя. Для глобальных временных таблиц object_id NULL возвращает. Для локальных катит полное имя tempdb..#table2, а для глобальных - только если сделать use tempdb перед этим.
Значит замени условия на where name = '##table'
Значит замени условия на where name = '##table'
Даже самый дурацкий замысел можно воплотить мастерски