Временная таблица в процедуре, параллельное выполнение
От: sdf678  
Дата: 21.06.13 14:12
Оценка:
Допустим, у нас есть хранимая процедура, которая внутри делает что-то типа такого:

if object_id('tempdb..#upd_position_hist_bulk') is not null
    begin
        drop table #upd_position_hist_bulk;
    end
    
    
create table #upd_position_hist_bulk (

    SomeID numeric(19,0) not null primary key

);


эта upd_position_hist_bulk — будет глобальная таблица?
если я одновременно запущу эту же процедуру из другого потока приложения (другая сессия соответственно, другой коннекшн к БД) — они будут что обе что ли общую временную таблицу использовать??
Re: SQL Server 2008 r2
От: sdf678  
Дата: 21.06.13 14:13
Оценка:
Здравствуйте, sdf678, Вы писали:

UPD: SQL Server 2008 r2
Re: Временная таблица в процедуре, параллельное выполнение
От: ichensky Украина https://github.com/ichensky
Дата: 21.06.13 17:09
Оценка: 2 (1)
Здравствуйте, sdf678, Вы писали:

S>Допустим, у нас есть хранимая процедура, которая внутри делает что-то типа такого:


S>
S>if object_id('tempdb..#upd_position_hist_bulk') is not null
S>    begin
S>        drop table #upd_position_hist_bulk;
S>    end
    
    
S>create table #upd_position_hist_bulk (

S>    SomeID numeric(19,0) not null primary key

S>);
S>


S>эта upd_position_hist_bulk — будет глобальная таблица?

S>если я одновременно запущу эту же процедуру из другого потока приложения (другая сессия соответственно, другой коннекшн к БД) — они будут что обе что ли общую временную таблицу использовать??


это будет локальная временна таблица, будет видна только на протяжении одного сеанса и в приделах всех внутренних уровней стека вызова(внутри процедуры, функции, треггера, дин. пакета)

глобальная будет так: ##upd_position_hist_bulk
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re: Временная таблица в процедуре, параллельное выполнение
От: пыщьпышь  
Дата: 26.06.13 08:35
Оценка:
Здравствуйте, sdf678, Вы писали:

S>Допустим, у нас есть хранимая процедура, которая внутри делает что-то типа такого:


S>эта upd_position_hist_bulk — будет глобальная таблица?

S>если я одновременно запущу эту же процедуру из другого потока приложения (другая сессия соответственно, другой коннекшн к БД) — они будут что обе что ли общую временную таблицу использовать??

С одним # будет локальная временная таблица, которая будет автоматически дропнута при выходе из области видимости: если создана внутри хранимой процедуры, то при выходе из неё, если создана отдельным запросом, то при закрытии сессии.
Глобальная временная таблица создается с префиксом в виде ##
Кроме того, можно использовать табличные переменные.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.