Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему временная таблица не видна в разных SP / 7 сообщений из 7, страница 1 из 1
16.05.2001, 15:50
    #32005740
Ivan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему временная таблица не видна в разных SP
Например
Exec ('Select * Into #T1 from Table1')
Select * From #T1 /* таблица в этой ситуации не видна*/
...
Рейтинг: 0 / 0
16.05.2001, 16:19
    #32005742
AnKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему временная таблица не видна в разных SP
Что-то сабж не вяжется с содержанием. Так все-таки "в разных сторедпроках" или так, как написано?
Что касается по содержанию, то спасет отца русской демократии
Exec ('Select * Into ##T1 from Table1')
Select * From ##T1

Обрати внимание на ## - это ГЛОБАЛЬНАЯ временная таблица - видна по всей базе, живет, пока есть хоть одно обращение к ней.

Есть еще вариантик
Exec ('Select * Into #T1 from Table1
Select * From #T1 ')

Если же по поводу "разных SP", то здесь дела обстоят так:
Локальная временная таблица # живет только внутри запроса, который ее создал. Таким образом, ее видят и все SP, которые вызываются ИЗ ЭТОГО ЗАПРОСА. Однако ее не видно из параллельных процессов. (На то она и локальная ) Потому и не выполняется то, что ты написал. Exec - отдельный процесс. Отработал, и ариведерчи - табличка уничтожена. Следующий селект ее во-первых не видит (т.к. он является параллельным первому), а во вторых, и не может увидеть - ее уже нет. А вот такая конструкция работает:

CREATE PROCEDURE AK_Q2
AS
SELECT *
FROM #T
----------------------
CREATE PROCEDURE AK_Q1
AS
SELECT *
INTO #T
FROM Tab1

EXEC AK_Q2
--------------------
Потому что AK_Q2 вложена в AK_Q1.

В общем, если что не так, коллеги поправят и дополнят.
...
Рейтинг: 0 / 0
16.05.2001, 16:34
    #32005746
Шмфт
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему временная таблица не видна в разных SP
Спасибо
...
Рейтинг: 0 / 0
16.05.2001, 16:44
    #32005748
Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему временная таблица не видна в разных SP
Господа,

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

в общем не вопрос
...
Рейтинг: 0 / 0
16.05.2001, 17:01
    #32005750
Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему временная таблица не видна в разных SP
это по поводу "разных процедур"
этот совершенно академический пример прекрасно работает, а в нем два разных вызова разных процедур (но под одним и тем-же юзером)

use pubs

create proc maketable as
select * into #table1 from titles
go

create proc readtable as
select * from #table1
go

exec maketable
go

exec readtable
go

комменты?
...
Рейтинг: 0 / 0
16.05.2001, 17:21
    #32005752
AnKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему временная таблица не видна в разных SP
Alexander:
попробуйте ваполнить maketable, а затем readtable, но уже из другого окна QA. Получилось? Очень сомневаюсь. Хотя пользователь - один и тот же.
...
Рейтинг: 0 / 0
16.05.2001, 17:29
    #32005754
AnKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему временная таблица не видна в разных SP
В догонку:
А примерчик-то академический, и в одном окне не работает...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему временная таблица не видна в разных SP / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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