SELECT MachineID, MachineName, count(ID) as Total, sum(Size) as TotalSize
FROM Files
join Machines on Files.MachineID = Machines.MachineID
Where Files.MachineID In(sql.Append(string.Format("@MachineId{0}", i));
group by Files.MachineID,MachineName
现在当machinId计数小于2100时,执行查询,如果机器超过2100,则抛出错误 错误:
传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。此RPC请求中提供的参数太多。最高为2100.
如何增加限制或者只是避免出现此错误..并将值放在gridview中 感谢..
答案 0 :(得分:4)
在你的例子中你没有说你的“sql”变量来自哪个但是如果你手动建立你的'IN'列表(通过在你的IN语句中用逗号分隔的值构建一个字符串),那么所有流行的关系数据库都有您可以在静态IN子句中指定的值的限制。您正在使用的数据库具有2100限制。我相信Oracle是1000
答案 1 :(得分:0)
你可以使用字符串函数。在SQL Server中,WHERE子句类似于
...WHERE CHARINDEX(':' + <: delimited list of machine IDs> + ':',
':' + CAST(Files.MachineID as VARCHAR(10)) + ':') <> 0
:分隔符是必要的,以防止100与1001,1002,2100等匹配。示例查询字符串将是
...WHERE CHARINDEX(':1000:1001:1002:1005:',
':' + CAST(Files.MachineID as VARCHAR(10)) + ':') <> 0