Неверный синтаксис вставки SQL Server - PullRequest
0 голосов
/ 28 февраля 2011

Я создал временную таблицу:
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 +')';<br> EXEC (@template);

Итак, если я печатаю @template:
INSERT #T_Table(id,name,value) VALUES(1, x1, Select [value] = SUM(x1) FROM Mytable);

Что не так?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Вот ВСТАВКА, которую вы должны построить:

INSERT #T_Table(id,name,value) 
SELECT 1, 'x1', SUM(x1) FROM Mytable
1 голос
/ 28 февраля 2011

Нельзя вложить 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'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...