将数据从临时表导入永久表时出现动态 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 错误的主要内容,如果未能解决你的问题,请参考以下文章
sql 2000 从excel表中导入数据时出现 在数据库xxx中拒绝了CREATE TABLE权限和拒绝了对对象xxxSELECT权限