反馈已提交

网络繁忙

Oracle多值查询参数个数限制

  • 文档创建者:axing
  • 历史版本:9
  • 最近更新:HeroZ 于 2023-01-31
  • 1. 概述

    1.1 版本

    报表服务器版本
    功能变更
    11.0-

    1.2 问题描述

    在使用 Oracle 数据查看,若使用 in 过滤,当参数大于1000 个时会出现报错。具体的报错信息是:错误代码:1301 数据集配置错误 Query:ORA-01795: 列表中的最大表达式数为 1000,如下图所示:

    222

    1.3 解决思路

    为解决该问题,在Oracle 查询语句中,可以使用 or 关键字替换 in 关键字实现同样的功能。如:

    select * from S订单明细 where 订单id  in ('10001','10002','10003','10004')

    可以被改写成:

    select * from S订单明细 where 订单id ='10001' or  订单id ='10002' or 订单id='10003' or 订单id='10004'

    2. 操作步骤

    2.1 编写查询 SQL

    新建普通报表,编写查询语句 SQL,sql中直接使用“=”号,不使用关键字in。

    select * from  S订单明细 where 订单id='${id}'

    如下图所示:

    15.png

    2.2 配置下拉复选框数据字典

    根据项目实际情况配置数据字典,我这里使用的是公式自动生成的 1 到 1001 的 ID 值。公式为:range(10001,11113)

    1600603807217293.png

    2.3 配置分隔符

    将分隔符设置为'or 订单id='

    14.png

    2.4 预览效果

    保存模板,点击「分页预览」,效果如下图所示:

    16.png


    3. 注意事项

    若出现:因使用了禁用的特殊关键字,怀疑进行了 SQL 攻击注入攻击,有特殊需要联系系统管理员

    则以管理员身份进入数据决策系统,点击「管理系统>安全管理>SQL防注入」,在已选择的关键字中点击\b(?i)or\b字段,变为未选择的关键字。如下图所示:

    17.png

    4. 已完成模板

    已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\MultiValue\Oracle多值查询参数个数限制示例.cpt

    点击下载模板:Oracle多值查询参数个数限制示例.cpt

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持