用于选择多个记录的存储过程

pad*_*thi 1 c# sql-server stored-procedures

我需要从c#.net代码中匹配时间戳的表中选择记录2000.例如:

SELECT * 
FROM ITEMDATA_TABLE 
WHERE ITEMNAME='Item1' and TimeStamp='2010-04-26 17:15:05.667'
Run Code Online (Sandbox Code Playgroud)

上述查询必须针对相同的时间戳执行2000个以上的项目.

为此,我们可以使用

SELECT * 
FROM ITEMDATA_TABLE 
WHERE ITEMNAME in ('Item1','Item2','Item3','Item4',......) 
  AND TimeStamp='2010-04-26 17:15:05.667'
Run Code Online (Sandbox Code Playgroud)

来自SQL Server Management Studio.

我已经尝试将所有Item名称附加到一个字符串变量并将其作为参数提供给存储过程,但是它导致了错误的连接.

我怎么能这样做作为从.net代码执行的存储过程?谁能建议我/纠正我这样做?

mar*_*c_s 6

如果您使用的是SQL Server 2008(您没有提及您的版本),则可以使用表值参数.

如果您使用的是SQL Server 2005或更低版本,请查看Erland Sommarskog 关于如何处理存储过程中参数列表的优秀文章.

你不能只是将它们作为字符串传递 - 这是行不通的.