Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как заставить SQL сделать выборку по таблице, имя которой передано в параметре? / 9 сообщений из 9, страница 1 из 1
26.11.2002, 11:06:24
    #32072404
Sergey_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре, без конкатенации строки запроса ? Или это в принципе невозможно?
...
Рейтинг: 0 / 0
26.11.2002, 11:51:55
    #32072442
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
Код: plaintext
1.
2.
3.
declare @table varchar

exec ('select * from ' + @table)
...
Рейтинг: 0 / 0
26.11.2002, 12:05:45
    #32072449
Sergey_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
To KirillovA

В вопросе уточнено '... без конкатенации строки запроса',
предлагаемая Вами ('select * from ' + @table) как раз и есть эта самая конкатенация, т. е. "набивка" строки с последующим выполнением.

Спасибо за отклик.
...
Рейтинг: 0 / 0
26.11.2002, 12:20:48
    #32072455
Shura_M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
Код: plaintext
1.
2.
3.
4.
5.
6.
declare @table varchar

if @table='my_table' 
  select * from my_table

if @table='my_table_2' 
  select * from my_table_2


иначе никак.
в процедуру нельзя передавать ни таблицу ни курсор.
...
Рейтинг: 0 / 0
26.11.2002, 12:30:19
    #32072460
Sergey_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
To Shura_M

Т. е., если имя таблицы заранее неизвестно, использование его в параметре невозможно?
...
Рейтинг: 0 / 0
26.11.2002, 14:01:59
    #32072504
Белов Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
>Sergey_S

В принципе, да.
У Вас получается динамический запрос. Соответственно, идет конкатенации строки. Потому что имя передаете как параметр и никак иначе
...
Рейтинг: 0 / 0
26.11.2002, 21:54:53
    #32072742
_TwoAll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
Просто нельзя значение FROM передать из переменной.
Если главной задачей есть что бы не было конкатенации
можно сделать примерно таким чудовищным способом :))

declare @my_table varchar(30) -- получили на вход
exec sp_rename @my_table, temp_table
select * from temp_table
exec sp_rename temp_table, @my_table

sp_rename делает апдейт системных таблиц и на вход получает значение переменных для WHERE и SET - конкатенации нет.
...
Рейтинг: 0 / 0
27.11.2002, 11:08:24
    #32072884
YuriAM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
Можно с помощью sp_executesql как параметр задавая имя таблицы
...
Рейтинг: 0 / 0
28.11.2002, 12:57:36
    #32073348
nomorenames
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
Код: plaintext
1.
2.
3.
declare @tab varchar( 128 ), @SQL varchar( 8000 )
set @tab = 'a_test_data'
set @SQL = 'select * from ' + @tab
EXEC (@SQL)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как заставить SQL сделать выборку по таблице, имя которой передано в параметре? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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