在 SQL Server 2005 中,我们可以将多个值插入为
INSERT INTO
TableName
(col1, col2, col3)
SELECT
'text1', 'text2', 1
UNION ALL
'text3', 'text4', 2
如何使用动态 sql 插入它EXEC @sql
当我跑
EXEC ' INSERT INTO
TableName
(col1, col2, col3)
SELECT
''text1'', ''text2'', 1 -- using double quotation marks to escape
UNION ALL
''text3'', ''text4'', 2
'
我收到错误消息
附近的语法不正确
'插入表名(col1,col2,col3)选择'text1','text2',1 UNION ALL SELECT'。
为什么它不执行?另外,为什么 sql 没有打印我输入的整个 sql 语句?为什么它在第二次选择后修剪?
谁能帮我写这个?
编辑
在我尝试了Devart's
解决方案之后。它在 SQL Server 和我的 ASP.NET 应用程序中运行良好。但是当任何文本中有空格时问题就来了
EXEC ('
INSERT INTO TableName (col1, col2, col3)
SELECT ''text1'' AS t1, ''text2'' AS t2, 1 AS t3
UNION ALL
SELECT ''text3'', ''text4'', 2
')
这工作正常...
但
EXEC ('
INSERT INTO TableName (col1, col2, col3)
SELECT ''text1'' AS t1, ''text2'' AS t2, 1 AS t3
UNION ALL
SELECT ''text3 with space in it'', ''text4 more spaces'', 2
')
只能在 SSMS 中正常工作,但不能在 asp.net 应用程序中正常工作。
代码如下..
var cmd = new SqlCommand
{ commandText = "myProcedure", commandType = CommandType.StoredProcedure, connection = myGlobalConnection };
cmd.Parameters.AddWithValue("@sqlParam", thatLongDynamicString);
cmd.ExecuteNonQuery();
throw 是Incorrect syntax error
nearwith
和 near more
,但如果文本列中没有空格。它工作正常。
为什么会这样?