yhdata_HAEeoc1x青铜一
7 天前 发布在问答
【报错信息处理】 多选框的数组长度过长报错
Caused by: java.sql.SQLException   执行SQL失败:“Expression child number 12618 exceeded the maximum 10000”

有一个树状筛选框,为了展示所有数据,用的维表的数据填的,在脚本中拿到筛选的数据后处理只拿最深的元素,然后拼成数组当成参数去过滤,一旦参数长度过大,就会报错
118
3
精彩评论3
yhdata_lyaa
发表于 7 天前 显示全部楼层
在执行 SQL 查询时,表达式中的子表达式(即某些列、值或运算)超过了数据库支持的最大数量限制。
用的维表的数据填的,在脚本中拿到筛选的数据,具体是怎么做的呢
回复

使用道具 2#

yhdata_HAEeoc1x青铜一
发表于 7 天前 显示全部楼层
使树状参数组件绑定一个维度数据,有5层结构,类似 国家-省-市-县-镇,然后在脚本中实现
var shuzu = []
var chanals = 渠道列表.getSelectedObjects()
if(chanals.length > 0){
for(var i = 0; i < chanals.length; i++) {

shuzu.push(chanals[i][5])
}
param['channel'] = shuzu
}else{
param['channel']  = null
}

最后将channel作为参数作用的数据集中,单独使用这个参数没有影响,但是有个参数组件绑定参数列用来指定排序,一旦channel过长,并且改变指定排序字段,就会报错,而且这个参数组件是有默认值的,处于默认值的时候,没有报错,可以正常执行
回复

使用道具 3#

yhdata_lyaa
发表于 7 天前 显示全部楼层
参考看看可以采取以下几种方法:

简化查询:尝试优化或简化查询,减少表达式中的列或计算项。如果有很多冗余的列或运算,可以考虑将其移除。

分割查询:如果查询非常复杂,可以考虑将其拆分为多个较小的查询,并通过临时表或中间结果进行处理。

检查 IN 子句:如果查询中使用了 IN 子句,并且该子句内的元素过多,可以尝试将其分割成多个 IN 子句或使用 JOIN 代替。

修改数据库配置(如果可能):在一些数据库系统中(如 Oracle、MySQL 等),你可以调整数据库的配置参数以增加此类限制。但这需要管理员权限。

使用临时表:如果你在查询中处理大量数据,考虑将部分数据插入临时表中,然后对临时表进行查询。

数据库引擎的限制:检查你所使用的数据库引擎的文档,查看是否有相关的限制,可以根据需要调整
回复

使用道具 4#

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
100W

用户等你来哦

Copyright   ©2012-2025  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部