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

Откуда:
Сообщений: 17
Суть следующая! Хранимая процедура принимает параметры, в зависимости от которых строится SQL-запрос. Результат этого запроса нужно поместить в временную таблицу. Что то примерно такое!
declare @tmp table (pole_in_tmp int)
declare @sql_str nvarchar(4000),@filter nvarchar(4000)
set @sql_str='select pole from table '
--В зависимости от приходящих в процедуру параметров генерится фильтр на выборку. К примеру.
set @filter=' where pole=5'
set @sql_str = 'insert  into @tmp '+@sql_str+@filter
execute sp_executesql @sql_str,N' @tmp table OUTPUT', @tmp  OUTPUT
select * from @tmp

Этот код выдает Must declare the variable '@tmp'. Вчем я не прав! Заранее спасибо!
30 авг 05, 16:26    [1829488]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37103
Замените табл. переменную на временную таблицу.
30 авг 05, 16:27    [1829493]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос  [new]
Alexey(Eburg)
Member

Откуда:
Сообщений: 17
Модернизировал до
create table #tmp (id_int int)
declare @sql_str nvarchar(4000)
set @sql_str='select 1'
set @sql_str = 'insert  into #tmp '+@sql_str
execute sp_executesql @sql_str,N' #tmp ', #tmp
select * from #tmp
drop table #tmp

Пишет опять ошибку
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '#tmp'.

(0 row(s) affected)
30 авг 05, 16:34    [1829530]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37103
автор
execute sp_executesql @sql_str,N' #tmp ', #tmp

Это еще чего такое?
30 авг 05, 16:36    [1829541]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос  [new]
Melkiades
Member

Откуда: Москва
Сообщений: 1553
А зачем вы пытаетесь еще и временную таблицу в sp_executesql запихнуть? Она и так прекрасно там увидится.
30 авг 05, 16:36    [1829544]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37103
Гавриленко Сергей Алексеевич
автор
execute sp_executesql @sql_str,N' #tmp ', #tmp

Это еще чего такое?

Может, просто
exec (@sql_str)
?
30 авг 05, 16:37    [1829547]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос  [new]
Alexey(Eburg)
Member

Откуда:
Сообщений: 17
Спасибо, разобрался!
30 авг 05, 16:39    [1829561]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить