将数据从临时表导入永久表时出现动态 SQL 错误

Posted

技术标签:

【中文标题】将数据从临时表导入永久表时出现动态 SQL 错误【英文标题】:Error in dynamic SQL while importing data from a temporary into a permanent table 【发布时间】:2018-11-28 19:54:17 【问题描述】:

这是我的查询:

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' 附近的语法不正确。

请帮忙。

【问题讨论】:

也许你需要在 FROM 前面留一个空格:P 您在from #temp 之前漏掉了一个空格。应该是Set @Query = 'Select * into table'+ CASt(@i AS VARCHAR(10)) + ' from #temp' ^^ 前两名 cmets 有答案。如果您有一个不执行的 dsql 查询,第一步通常是打印出来自己查看,以便检查它为什么不工作。 【参考方案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;

【讨论】:

以上是关于将数据从临时表导入永久表时出现动态 SQL 错误的主要内容,如果未能解决你的问题,请参考以下文章

连接 VBA SQL 语句中的字段时出现错误 424

将产品表导入我的数据库时出现此错误

MySQL 添加表时出现“错误 1005”

从 SQL 动态结果插入临时表

mysql建表时出现错误,代码是1064

sql 2000 从excel表中导入数据时出现 在数据库xxx中拒绝了CREATE TABLE权限和拒绝了对对象xxxSELECT权限