select语句中的in运算
select语句中where后用in运算时,in运算中最多支持多少参数?
我有条语句,判断操作员对哪些部门具有数据操作权时,用了in运算。当部门很多时,系统报错。我前端是用PB9开发的.
------最佳解决方案--------------------这个你可以先输出改sql,然后再mssql忠执行是否成功。
------其他解决方案--------------------直接写的时候貌似没啥问题,但是我试过在存储过程里面调用的时候传一大串到in里面会报错,说执行计划过于复杂,后来我是把那串先换成一个表变量存进去,问题就解决了。
------其他解决方案--------------------MSSQL木限制。 IN里面的东西过多可以弄成表。
------其他解决方案--------------------在 IN 子句中包括数量非常多的值(数以千计)可能会消耗资源并返回错误 8623 或 8632。若要解决这一问题,请将这些项存储于某个表的 IN 列表中。
错误 8623:
查询处理器用尽了内部资源,无法生成查询计划。这种情况很少出现,只有在查询极其复杂或引用了大量表或分区时才会出现。请简化查询。如果您认为该消息的出现纯属错误,请与客户支持服务部门联系,了解详细信息。
错误 8632:
内部错误: 达到了表达式服务限制。请在您的查询中查找潜在的复杂表达式,并尝试简化它们。
------其他解决方案--------------------
数据操作权 in ('操作权1','操作权2','操作权3','操作权4','操作权5')
------其他解决方案--------------------是不是部门很多时,传递到数据库执行的SQL语句,超出了最大长度了。用openquery 或者用exec执行那么就会出错。
------其他解决方案--------------------in的后面我跟的是数组,数组应该和变量表相同吧