powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Про временные таблицы
8 сообщений из 8, страница 1 из 1
Про временные таблицы
    #32012261
Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как можно обмануть "заумный" SQL

в зависимости от некоторого условия в хранимой прцедуре выполняются два запроса, результаты которых должны помещатся в одну временную таблицу. Что-то вроде следующего

if <cond>
select <fields>
into #TABLE1
else
select <fields>
into #TABLE1

При попытке разестить такую хранимую процедуру на сервере выдается сообщение об ошибке "There is already an object named '#TABLE1' in the database."

Как можно решить проблему не прибегая к созданию временной таблицы перед выполнением запросов и дальнейшей вставки записей в эту временную таблицу
...
Рейтинг: 0 / 0
Про временные таблицы
    #32012265
VictorS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может вот так попробывать?


select <fields>
into #TABLE1
WHERE <cond1>
UNION
select <fields>
WHERE <cond2>
...
Рейтинг: 0 / 0
Про временные таблицы
    #32012266
Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни как, влюбом случае надо создавать временную таблицу
...
Рейтинг: 0 / 0
Про временные таблицы
    #32012271
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле в BOL рекомендуется сначала создать временную таблицу с помощью CREATE TABLE,
а уж потом вставлять в нее записи, что объясняется тем, что при создании временной таблицы
с помощью SELECT ... INTO #Table, temdb будет блокироваться исключительно, до тех пор, пока не
закончится вставка данных, что чревато, если происходит длительная выборка(1000-и строк).
Сам это проверял, но есть подозрение, что они не врут
В 1 же случае, temdb блокируется только на момент создания БД, то есть - CREATE.
...
Рейтинг: 0 / 0
Про временные таблицы
    #32012278
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет блокировки тоже не проверял, но по скорости выполнение вливание данных в уже созданную таблицу быстрей однозначно. Проверено.
...
Рейтинг: 0 / 0
Про временные таблицы
    #32012317
AnKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя немного отклоняюсь от изначальной темы, просто в продолжение о создании временных таблиц и вливания в них. Безусловно, CREATE TABLE #Tmp1.... + INSERT INTO #Tmp1... работает быстрее, чем SELECT ... INTO #Tmp1 ... Однако в первом случае при CREATE TABLE приходится полностью описывать поля, что не всегда удобно. Если временная таблица по структуре едентична существующей, я делаю SELECT * INTO #Tmp1 FROM T1 WHERE 1=2, а потом уже INSERT INTO #Tmp1...
Это так, просто советик. Может, кому пригодиться.
...
Рейтинг: 0 / 0
Про временные таблицы
    #32012321
Pandre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Несколько раз встречался с тем, что select * into #tmp from t1 создает неправильную по структуре таблицу #tmp (допустим вместо varchar(32) создается varchar(1), если это поле в исходной таблице заполнено NULL)
...
Рейтинг: 0 / 0
Про временные таблицы
    #32012337
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже с этим сталкивался. Лечится с помощью CAST/CONVERT. А вариант AnKa мне понравился.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Про временные таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]