2011-02-28 33 views
0

我创建了一个时序表:
create table #T_Table(id int,name nvarchar(80),value float);不正确的插入大成SQL服务器

我执行动态SQL从@table_name插入到#T_Table选择的结果是这样的:

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

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

这是什么错误?

回答

1

Here's的INSERT你应该建立:

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

YES时,选择[值] = SUM(X1)中的溶液标记错误, – cMinor 2011-02-28 15:50:41

1

您不能将SELECT嵌套在VALUES值集内。

更改VALUESSELECT并删除括号。你还需要确保x1被包裹在引号,例如:

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

要解决x1报价,你将不得不把双引号引用的字符串中逃脱他们:例如SET @quotedString = 'not quoted, ''quoted,'' not quoted'