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

Откуда: ***
Сообщений: 474
DECLARE @str VARCHAR(Max)
SET @str = 'select top 5 CustomerID, Customer INTO #tmpCustomer From Customer'
EXEC (@str)
select * From #tmpCustomer


При выполнении такого кода получаю ошибку

Недопустимое имя объекта "#tmpCustomer".

Почему не создается временная таблица ?

Если же создаю таблицу с двумя решетками "##tmpCustomer", то запрос
select * From ##tmpCustomer возвращает набор записей.
Не понятно почему не создается таблица с одной решеткой.
31 окт 13, 13:28    [15058240]     Ответить | Цитировать Сообщить модератору
 Re: Динамический SQL запрос с записью во временную таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Создается все.
31 окт 13, 13:29    [15058253]     Ответить | Цитировать Сообщить модератору
 Re: Динамический SQL запрос с записью во временную таблицу  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
Она создаётся внутри другой сессии в которой выполняется динамика
Попробуйте так
DECLARE @str VARCHAR(Max)
SET @str = 'select top 5 CustomerID, Customer INTO #tmpCustomer From Customer;select * From #tmpCustomer'
EXEC (@str)
31 окт 13, 13:32    [15058293]     Ответить | Цитировать Сообщить модератору
 Re: Динамический SQL запрос с записью во временную таблицу  [new]
Crimean
Member

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

твой exec() - "отдельный батч". времянка живет, но только в нем. за его пределами - он уже завершен - времянка уже удалилась и ты ее "не видишь"

DECLARE @str VARCHAR(Max)
SET @str = 'insert into #tmpCustomer select 1 as CustomerID, 2 as Customer '
create table #tmpCustomer ( CustomerID int , Customer int )
EXEC (@str)
select * From #tmpCustomer
go

drop table #tmpCustomer
go


ну и твой пример:

DECLARE @str VARCHAR(Max)
SET @str = 'select 1 as CustomerID, 2 as Customer INTO #tmpCustomer ; select * from #tmpCustomer'
EXEC (@str)
31 окт 13, 13:33    [15058303]     Ответить | Цитировать Сообщить модератору
 Re: Динамический SQL запрос с записью во временную таблицу  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
У меня не создается.
Соответственно при выполнении
DROP TABLE #tmpCustomer

получаю ошибку
Не удалось удалить таблица "#tmpCustomer", так как он не существует или отсутствуют разрешения.
31 окт 13, 13:34    [15058310]     Ответить | Цитировать Сообщить модератору
 Re: Динамический SQL запрос с записью во временную таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
andMegaM
У меня не создается.
Нет. Просто кто-то не понимает разныцы между "Не создается" и "Создается и удаляется".
31 окт 13, 13:36    [15058328]     Ответить | Цитировать Сообщить модератору
 Re: Динамический SQL запрос с записью во временную таблицу  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
Ясно. Спасибо.
Придется что-то придумывать через ##tmpCustomer
31 окт 13, 13:42    [15058398]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить