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

Откуда:
Сообщений: 414
Приветствую.
Возможно ли сделать что-то вида

if exists #table 
drop #table

смысл в том, чтобы MSSQL не ругался в случае если таблички такой нет
11 мар 10, 12:13    [8460777]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
if object_id('tempdb..#table') is not null
  drop table #table
11 мар 10, 12:14    [8460784]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
diwww
Member

Откуда:
Сообщений: 425
if object_id('tempd..#table') is not null drop table #table
11 мар 10, 12:15    [8460789]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
gjkmpjdfntkm
Member

Откуда:
Сообщений: 414
Спасибо!

еще есть такой вопрос:

select умеет создавать временные таблицы для последующего инсерта,
но вот когда такой select вставляешь в job - идет руготня, что такого объекта (временной таблицы)
не существует. Как лучше сделать ? Создавать временную таблицу явно?
11 мар 10, 12:25    [8460898]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Временную таблицу всегда лучше создавать явно.
11 мар 10, 12:26    [8460905]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
gjkmpjdfntkm
Member

Откуда:
Сообщений: 414
Например такой скрипт в jobе будет ругаться, а в Query отработает
select destDeviceName
into #tempc
from fullint
11 мар 10, 12:26    [8460909]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
gjkmpjdfntkm
Member

Откуда:
Сообщений: 414
Гавриленко Сергей Алексеевич,

Ок, спасибо
11 мар 10, 12:27    [8460912]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
Glory
Member

Откуда:
Сообщений: 104751
gjkmpjdfntkm
Например такой скрипт в jobе будет ругаться, а в Query отработает
select destDeviceName
into #tempc
from fullint

Такой запрос нигде не будет ругаться
Потому что этот запрос не нуждается в наличии временной таблицы
11 мар 10, 12:33    [8460974]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
gjkmpjdfntkm
Member

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

Я его упростил значительно...оставил структуру которая интересует

Если вы намекаете про View, то здесь не подойте, там идут подзапросы
11 мар 10, 12:48    [8461135]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
Glory
Member

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

Я его упростил значительно...оставил структуру которая интересует

Что еще раз говорит о том, что ошибка происходит в другом месте
11 мар 10, 12:51    [8461157]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Glory
gjkmpjdfntkm
Например такой скрипт в jobе будет ругаться, а в Query отработает
select destDeviceName
into #tempc
from fullint
Такой запрос нигде не будет ругаться
Потому что этот запрос не нуждается в наличии временной таблицы
Ну почему же не будет ? Будет, если врем. таблица уже существует. :)
11 мар 10, 14:41    [8462275]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
adsl4228
Member

Откуда:
Сообщений: 2
В развитие этой темы. Есть фрагмента кода:

ALTER PROCEDURE spTestTmpTab
@flag varchar(1)='1'
AS
IF @flag = '1' BEGIN
IF OBJECT_ID('tempdb..#tmpobst1','U') IS NOT NULL DROP TABLE #tmpobst1
SELECT * INTO #tmpobst1 FROM master..spt_values where name is not null
END
ELSE BEGIN
IF OBJECT_ID('tempdb..#tmpobst1','U') IS NOT NULL DROP TABLE #tmpobst1
SELECT * INTO #tmpobst1 FROM master..spt_values where name is null
END
< Дальше по тексту используется #tmpobst1.>

При выполнении возникает ошибка:
«В базе данных уже существует объект с именем "#tmpobst1"». Естественно, если в ELSE изменить tempdb..#tmpobst1 на tempdb..#tmpobst2, то ошибки не будет.
Вопрос: как можно изменить этот фрагмент, чтобы не вводить в ELSE #tmpobst2, а использовать только имя #tmpobst1?
21 май 10, 15:06    [8814612]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Замените ваши select into на create и insert into.
21 май 10, 15:08    [8814644]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
adsl4228
Member

Откуда:
Сообщений: 2
Спасибо, Сергей Алексеевич, за помощь. Вопрос закрыт!
21 май 10, 15:26    [8814851]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Проверка на существование временной таблицы и ее удаление  [new]
Beglanka
Member

Откуда:
Сообщений: 4
а если так
set @b = 1
if @a = 1
begin
    select
        identity(1,1) as id, 
        name
    into #temp
    from
        TABLE

    drop table #temp
end
else
begin
    while @b < 5
    begin
         select
              identity(1,1) as id, 
               name
         into #temp
         from
               TABLE

         drop table #temp
         set @b = @b + 1
    end
end

выделение кода что-то не работает. Нужно чтобы id Всегда начиналось с 1, потому что по id потом идет join
почему вылезает эта ошибка, хотелось бы ее победить, иначе придется заполнять табличку, а потом писать ее update с нумерацией строк - не хочу.

Сообщение было отредактировано: 26 сен 11, 19:48
26 сен 11, 19:41    [11337984]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Beglanka
почему вылезает эта ошибка
Потому что неправильно написано.

Нужно вначале создать табличку, а потом вставлять данные.
26 сен 11, 20:59    [11338294]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на существование временной таблицы и ее удаление  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Beglanka,

Для нумерации следует использовать ROW_NUMBER() без всяких временных таблиц, если версия сервера позволяет.
26 сен 11, 21:00    [11338296]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить