Как использовать переменную в операторе SQL From Line

Я пытаюсь создать процедуру, которая позволяет использовать переменную в качестве имени таблицы.

Пример:

Select Temp1, Temp2 
From @var 

@var имеет правильное имя таблицы, но меняется с каждой итерацией цикла while.

-- Above sets up all Variables
WHILE @Count >= @I
BEGIN 
SET @ObjectID = (SELECT ObjectID FROM @TmpTable WHERE ID = @I)
SET @TableName = (SELECT TableName FROM @TmpTable WHERE ID = @I)
IF @I = 8
BEGIN

        SELECT * 
        INTO ##TMPTable
        FROM @TableName
        -- Additional Processing
END
END

person epelletier9740    schedule 08.07.2014    source источник
comment
вы не можете без использования динамического SQL (построение строки с выбором и последующее выполнение этой строки) stackoverflow.com/questions/20678725/ или stackoverflow.com/questions/1325044/ или stackoverflow.com/questions/10521144/... выбирай все, скажем, динамический SQL   -  person xQbert    schedule 08.07.2014
comment
Я не понимаю. Как это меняется? Он не используется в цикле. Больше кода? :-п   -  person Relevant    schedule 08.07.2014
comment
Я бы рекомендовал избегать динамического sql, если вы можете найти другой способ: sommarskog.se/dynamic_sql.html   -  person Relevant    schedule 08.07.2014
comment
Вам вообще нужна петля здесь? Какая дополнительная обработка? Этот вид кричит о плохом дизайне, но информации не так много. Конечно, то, как вы закодировали этот цикл, кажется действительно бессмысленным, поскольку вы собираетесь что-либо делать только тогда, когда @I = 8.   -  person Sean Lange    schedule 08.07.2014
comment
@I= 8 предназначен только для тестирования, чтобы я мог работать с одной таблицей. Основная цель — скопировать данные во временную таблицу, чтобы мы могли воссоздать схему.   -  person epelletier9740    schedule 08.07.2014