Можно ли использовать что-то типа макроподстановки в "FROM"?

Alexander Ch
Дата: 16.02.2001 11:10:57
Господа, есть некоторая проблема.

Если я не знаю заранее из какой таблицы я буду делать выборку, допустим если название таблицы хранится в строковой переменной, то как мне указать в выборке, что мне нужно сделать выборку именно из неё???
т.е.

declare @ctable_name char(4)
set @ctable_name = "stud"

select * from @ctable_name ?????????????????????????????????????
не получается... 8-( есть один способ, но он уж очень нерациональный

declare @cCmd varchar(200)
set @cCmd = "select * from "+@cTable_Name
exec(@cmd)

Подскажите как обойти этот способ - создаются очень большие неудобства. Заранее благодарю.
Дед Маздай
Дата: 16.02.2001 14:43:16
Так даже если бы можно было делать select * from @str, все равно эти неудобства бы никуда не делись. Как же он будет план запроса строить, если таблица заранее неизвестна? Не надо от SQL требовать то же, что и от С. Это языки разного устройства и назначения.
VadimB
Дата: 16.02.2001 16:31:26
Если заренее извесны имена всех таблиц (T1,T2...), то можно:

if @ctable_name = 'T1' begin select * from T1 return end
if @ctable_name = 'T2' begin select * from T1 return end
if @ctable_name = 'T3' begin select * from T1 return end
...
VadimB
Дата: 16.02.2001 16:32:35
Если заренее извесны имена всех таблиц (T1,T2...), то можно:
if @ctable_name = 'T1' begin select * from T1 return end
if @ctable_name = 'T2' begin select * from T2 return end
if @ctable_name = 'T3' begin select * from T3 return end
...