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

Oracle APEX SQL查询按JIRA参数是否为空动态调整过滤条件咨询

你可以直接在WHERE子句中新增参数非空判断逻辑,无需拆分两个查询,也不需要用CASE/IF表达式,修改后的SQL如下:

SELECT name AS d, test_run_id AS r 
FROM test_run 
WHERE 
  (:TR_BASED_ON_PROJECT IS NULL OR project_jira_key = :TR_BASED_ON_PROJECT)
  AND folder_id NOT IN (
    SELECT folder_id 
    FROM folder 
    WHERE name IN (
      SELECT column_value 
      FROM TABLE(apex_string.split(config.get('ATM_DASHBOARD_CONFIGURATION_FOLDER_EXCLUDE'), ','))
    )
  );

逻辑说明

  • 当绑定参数TR_BASED_ON_PROJECT有值时,project_jira_key = :TR_BASED_ON_PROJECT条件生效,仅返回对应JIRA项目的测试运行记录
  • 当绑定参数TR_BASED_ON_PROJECT为NULL时,前面的判断条件整体为真,不会对project_jira_key做任何限制,仅保留排除指定文件夹的逻辑,返回所有项目的符合要求的记录

注意事项

如果担心参数变化导致执行计划不稳定,可以在SQL开头加提示/*+ OPT_PARAM('optimizer_features_enable', '12.2') */启用Oracle的自适应游标功能,避免不同参数值走不合适的执行计划。
如果你的业务场景中project_jira_key不会为NULL,也可以用更简洁的写法替换OR判断:
project_jira_key = NVL(:TR_BASED_ON_PROJECT, project_jira_key)
注意:如果存在project_jira_key为NULL的记录,NVL写法会过滤掉这些NULL记录,这时候优先用第一种OR判断的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:45:01