插入语法不正确SQL Server

时间:2011-02-28 15:31:28

标签: sql-server-2008

我创建了一个时间表:
create table #T_Table(id int,name nvarchar(80),value float);

我正在执行动态SQL以#T_Table@table_name插入选择结果,如下所示:

SET @template = 'INSERT #T_Table (id,name,value) VALUES('+Cast(@counterI as nvarchar)+', '+ @fieldFromTableName +', Select [value] = SUM('+@fieldFromTableName+') FROM '+ @table_name +')';
EXEC (@template);

所以,如果我打印@template
INSERT #T_Table(id,name,value) VALUES(1, x1, Select [value] = SUM(x1) FROM Mytable);

有什么不对?

2 个答案:

答案 0 :(得分:1)

您无法在SELECT个值集中嵌套VALUES

VALUES更改为SELECT并删除括号。您还需要确保x1包含在引号中,例如:

INSERT #T_Table(id,name,value) 
SELECT 1, 'x1', Select [value] = SUM(x1) FROM Mytable;

要获得x1周围的引号,您必须在引用的字符串中放置双引号以逃避它们:例如SET @quotedString = 'not quoted, ''quoted,'' not quoted'

答案 1 :(得分:1)

这是您应该构建的INSERT:

INSERT #T_Table(id,name,value) 
SELECT 1, 'x1', SUM(x1) FROM Mytable