Грешка в динамичния 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
може би имате нужда от място пред вашето ОТ :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