You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apex 22.1/23.1.1如何向OData REST服务传递筛选器

问题概述

已部署OData Rest Service插件并配置对应REST数据源,后端.NET OData服务返回一张通过Type字段区分多组LOV的数据表。基于该数据源创建的LOV及Popup Lov可正常显示全量数据,直接在浏览器中调用OData服务并携带$filter筛选参数也能正常工作。

当前需求是绕过LOV的「Post Processing Type = SQL查询」模式(该模式会先拉取全表数据再由APEX本地筛选),让APEX直接将OData筛选条件传递给后端服务,仅返回所需数据。但在APEX 22.1的LOV编辑页「Advanced REST Data Source Attributes」→「External Filter」中输入$filter=CodeType eq 135这类筛选格式时,触发ORA-06531: 未初始化集合引用错误;在APEX 23.1.1中使用官方OData示例服务测试,同样出现该报错。

解决方案

1. 先在REST数据源中配置$filter参数

不要直接在LOV的External Filter里写完整的$filter语句,先给REST数据源添加筛选参数:

  • 进入「Shared Components」→「REST Data Sources」,找到目标OData数据源
  • 切换到「Parameters」标签页,点击「Add Parameter」:
    • 参数名称:$filter
    • 参数类型:Query String
    • 方向:Outbound
    • 默认值:留空(如果是固定筛选条件可直接填,比如CodeType eq 135)

2. 在LOV中传递筛选逻辑

回到LOV编辑页的「Advanced REST Data Source Attributes」:

  • 在「External Filter」中只写筛选的核心逻辑,不需要加$filter=前缀,比如:
    CodeType eq :P1_TYPE_ID
    
    这里的:P1_TYPE_ID是页面绑定项,APEX会自动把这个逻辑拼接到之前配置的$filter参数中,生成符合OData规范的请求URL。

3. 排查ORA-06531错误根源

这个错误是因为APEX处理外部筛选时,存储筛选条件的集合未正确初始化,需注意:

  • 禁止在「External Filter」中同时写$filter=前缀和筛选逻辑
  • 确保REST数据源中没有重复定义$filter参数
  • 如果用动态绑定变量,确认绑定的页面项存在且未被会话状态保护限制

验证效果

配置完成后,打开页面测试Popup Lov,查看浏览器网络请求的URL,确认$filter参数已正确携带,且后端返回的是筛选后的数据集。


内容的提问来源于stack exchange,提问作者bjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:03:04