反馈已提交

网络繁忙

Oracle多值查询参数个数限制

  • 文档创建者:axing
  • 编辑次数:8次
  • 最近更新:Catqiu 于 2021-09-15
  • 1. 概述

    1.1 版本

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

    1.2 问题描述

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

    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

    附件列表


    主题: 参数应用
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    在线QQ(将在2023.01.05关停):800049425

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

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

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

    不再提示

    10s后关闭

    7*24h

    智 能客 服