2011-02-28 36 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'