Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 @table vs #table в хранимке  [new]
сфьщ
Guest
Вопрос:
- почему внутри хранимой процедуры не работает
...
DECLARE @querry varchar(8000)
SET @querry='SELECT * FROM @temp_table'
	EXEC(@querry)


где @temp_table - входной параметр (определяемый пользователем табличный тип)

если создать временную таблицу и заполнить ее данными из @temp_table, то все работает?

SET @querry='SELECT * FROM #tempTb'
	EXEC(@querry)

работает
6 мар 12, 18:35    [12205997]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
Glory
Member

Откуда:
Сообщений: 104751
Потому что @temp_table есть локальная переменная
6 мар 12, 18:37    [12206007]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
сфьщ
Guest
да, забыл совсем - код ошибки такой
сообщение 1087, уровень 15,...
Необходимо объявить табличную переменную "@temp_table".
6 мар 12, 18:38    [12206014]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
сфьщ
Guest
Glory
Потому что @temp_table есть локальная переменная

то есть, сделать без использования временной таблицы никак не получится?
6 мар 12, 18:42    [12206034]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
Glory
Member

Откуда:
Сообщений: 104751
сфьщ
то есть, сделать без использования временной таблицы никак не получится?

Сделать что ?
6 мар 12, 18:43    [12206043]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
сфьщ
Guest
Glory
сфьщ
то есть, сделать без использования временной таблицы никак не получится?

Сделать что ?

EXECUTE.
Можно ли каким-нибудь образом обойтись без инициализации и последующего использования временной таблицы, работая только с @temp_table
6 мар 12, 18:49    [12206068]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
Glory
Member

Откуда:
Сообщений: 104751
сфьщ
Можно ли каким-нибудь образом обойтись без инициализации и последующего использования временной таблицы, работая только с @temp_table

Все пользовательские переменные в TSQL - локальные
Объявляя переменную в одном пакете, вы не можете использовать ее в другом пакете. Только передать значение можете
Да и какой смысл в таком динамическом запросе.
6 мар 12, 18:52    [12206087]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
сфьщ
Guest
Glory
сфьщ
Можно ли каким-нибудь образом обойтись без инициализации и последующего использования временной таблицы, работая только с @temp_table

Все пользовательские переменные в TSQL - локальные
Объявляя переменную в одном пакете, вы не можете использовать ее в другом пакете. Только передать значение можете
Да и какой смысл в таком динамическом запросе.


Ясно, спасибо.
6 мар 12, 18:55    [12206101]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Попробуйте sp_executesql с параметрами. Здесь посмотрите.
7 мар 12, 10:49    [12208192]     Ответить | Цитировать Сообщить модератору
 Re: @table vs #table в хранимке  [new]
сфьщ
Guest
defragmentator
Попробуйте sp_executesql с параметрами. Здесь посмотрите.


Спасибо за ссылку - классная статья.
7 мар 12, 14:16    [12210124]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить