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

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

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

Спасибо за отклик.
...
Рейтинг: 0 / 0
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
    #32072455
Фотография Shura_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
    #32072460
Sergey_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Shura_M

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

В принципе, да.
У Вас получается динамический запрос. Соответственно, идет конкатенации строки. Потому что имя передаете как параметр и никак иначе
...
Рейтинг: 0 / 0
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
    #32072742
_TwoAll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто нельзя значение 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
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
    #32072884
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно с помощью sp_executesql как параметр задавая имя таблицы
...
Рейтинг: 0 / 0
Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
    #32073348
nomorenames
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как заставить SQL сделать выборку по таблице, имя которой передано в параметре?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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