【发布时间】:2016-03-22 17:35:14
【问题描述】:
我有一个关于动态插入 sql 存储过程的问题,因为我需要插入一个未知数量(动态生成),
下面是它的写法:
@Parameter as nvarchar(Max),
@SQLQuery as nvarchar(Max)
SET @SQLQuery = 'insert into <table>
(FieldOne,FieldTwo,FieldThree,GeneratedId,dateAdded,addedBy)
values '+@Parameter
EXEC sp_executesql @SQLQuery
当我尝试使用以下值执行此存储过程时:
@Parameter = (1,0,0,12345678123,"2016-03-22 23:26:25",123)
@SQLQuery = null
我什至尝试(出于愚蠢的原因)尝试以下值:
@Parameter = (1,0,0,12345678123,2016-03-22 23:26:25,123)
@SQLQuery = null
我从 SQL Server 收到以下错误
消息 102,级别 15,状态 1,行 3 '23' 附近的语法不正确。
(受影响的 1 行)
但实际上没有添加任何行。
我使用的表格如下:
ID (PK and autoincrement)
FieldOne: tinyint
FieldTwo: tinyint
FieldThree: tinyint
GeneratedId: nvarchar(50)
dateAdded: datetime
addedBy: int
我似乎无法弄清楚我做错了什么,
提前感谢大家的时间和帮助。
【问题讨论】:
-
“我需要插入未知数量”是什么意思?列数未知?
-
@Parameter = (1,0,0,12345678123,''2016-03-22 23:26:2'',123)使用双单引号 -
是的,在某些时候我可能需要 (1,0,0,12345678123,"2016-03-22 23:26:25",123) 而另一个时候我可能需要 (1,0 ,0,12345678123,"2016-03-22 23:26:25",123),(1,0,0,12345678124,"2016-03-22 23:26:26",123)
标签: sql vb.net sql-server-2008