Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Про временные таблицы
|
|||
|---|---|---|---|
|
#18+
Подскажите как можно обмануть "заумный" SQL в зависимости от некоторого условия в хранимой прцедуре выполняются два запроса, результаты которых должны помещатся в одну временную таблицу. Что-то вроде следующего if <cond> select <fields> into #TABLE1 else select <fields> into #TABLE1 При попытке разестить такую хранимую процедуру на сервере выдается сообщение об ошибке "There is already an object named '#TABLE1' in the database." Как можно решить проблему не прибегая к созданию временной таблицы перед выполнением запросов и дальнейшей вставки записей в эту временную таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2001, 13:43 |
|
||
|
Про временные таблицы
|
|||
|---|---|---|---|
|
#18+
Может вот так попробывать? select <fields> into #TABLE1 WHERE <cond1> UNION select <fields> WHERE <cond2> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2001, 14:01 |
|
||
|
Про временные таблицы
|
|||
|---|---|---|---|
|
#18+
Ни как, влюбом случае надо создавать временную таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2001, 14:01 |
|
||
|
Про временные таблицы
|
|||
|---|---|---|---|
|
#18+
На самом деле в BOL рекомендуется сначала создать временную таблицу с помощью CREATE TABLE, а уж потом вставлять в нее записи, что объясняется тем, что при создании временной таблицы с помощью SELECT ... INTO #Table, temdb будет блокироваться исключительно, до тех пор, пока не закончится вставка данных, что чревато, если происходит длительная выборка(1000-и строк). Сам это проверял, но есть подозрение, что они не врут В 1 же случае, temdb блокируется только на момент создания БД, то есть - CREATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2001, 14:36 |
|
||
|
Про временные таблицы
|
|||
|---|---|---|---|
|
#18+
Насчет блокировки тоже не проверял, но по скорости выполнение вливание данных в уже созданную таблицу быстрей однозначно. Проверено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2001, 15:40 |
|
||
|
Про временные таблицы
|
|||
|---|---|---|---|
|
#18+
Хотя немного отклоняюсь от изначальной темы, просто в продолжение о создании временных таблиц и вливания в них. Безусловно, CREATE TABLE #Tmp1.... + INSERT INTO #Tmp1... работает быстрее, чем SELECT ... INTO #Tmp1 ... Однако в первом случае при CREATE TABLE приходится полностью описывать поля, что не всегда удобно. Если временная таблица по структуре едентична существующей, я делаю SELECT * INTO #Tmp1 FROM T1 WHERE 1=2, а потом уже INSERT INTO #Tmp1... Это так, просто советик. Может, кому пригодиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 06:20 |
|
||
|
Про временные таблицы
|
|||
|---|---|---|---|
|
#18+
Несколько раз встречался с тем, что select * into #tmp from t1 создает неправильную по структуре таблицу #tmp (допустим вместо varchar(32) создается varchar(1), если это поле в исходной таблице заполнено NULL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 06:29 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32012265&tid=1825817]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 307ms |

| 0 / 0 |
