Ошибка в динамическом SQL при импорте данных из временной таблицы в постоянную

Это мой запрос:

Declare @i int
Declare @Query nvarchar(max)

Set @i = 1

while(@i < 3)
begin
    Select YEAR, MONTH 
    into #temp 
    from Toyota1

    Set @Query = 'Select * into table'+ CASt(@i AS VARCHAR(10)) + 'from #temp'

    Set @i = @i + 1 

    exec (@query)

    Drop Table #temp
end

Я получаю эти ошибки:

Сообщение 102, уровень 15, состояние 1, строка 2
Неверный синтаксис рядом с '#temp'

Сообщение 102, уровень 15, состояние 1, строка 2
Неверный синтаксис рядом с '#temp'.

Пожалуйста помоги.


person prateek pande    schedule 28.11.2018    source источник
comment
может быть, вам нужен пробел перед вашим FROM: P   -  person UnhandledExcepSean    schedule 28.11.2018
comment
Вы пропустили пробел перед from #temp. Должно быть Set @Query = 'Select * into table'+ CASt(@i AS VARCHAR(10)) + ' from #temp'   -  person Andrey Nikolov    schedule 28.11.2018
comment
^^ В двух верхних комментариях есть ответ. Если у вас есть запрос dsql, который не выполняется, первым шагом обычно будет его распечатка, чтобы посмотреть на него самостоятельно, чтобы вы могли понять, почему он не работает.   -  person Jack    schedule 28.11.2018


Ответы (1)


Что-то вроде этого, возможно:

DECLARE @i     INT = 1
DECLARE @Query NVARCHAR(MAX);

IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp;
SELECT TOP (0) [YEAR], [MONTH]
INTO #temp 
FROM Toyota1;


WHILE(@i < 3)
BEGIN
  INSERT #temp ([YEAR], [MONTH])
  SELECT [YEAR], [MONTH]
  FROM Toyota1
  WHERE <some logic here that requires a loop>

  SET @i += 1
END

SELECT * 
INTO <TABLE> 
FROM #temp;

DROP TABLE #temp;
person Alan Burstein    schedule 28.11.2018