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

ORA-00907 Missing Right Parenthesis 缺失右括号子查询报错问题

ORA-00907错误排查及解决方法

错误根因

  • 核心语法错误:Oracle调用存储函数的命名参数必须使用参数名 => 参数值的固定格式,你在P_ORDER_LOCATION_ID参数后直接写in (SELECT DESCRIPTION FROM DEFINITIOS.DEPARTMENT)不符合参数传递规则,Oracle解析到此处无法识别合法语法结构,因此抛出缺失右括号错误。
  • 潜在笔误:子查询中的表名DEFINITIOS大概率是DEFINITIONS的拼写错误,后续调试时请注意校验。

解决方案

1. 单值参数场景(P_ORDER_LOCATION_ID仅支持传入单个值)

如果函数设计时该参数仅接受单个字符/数值,你需要将该参数的赋值逻辑改为合法的=>格式,先传入单个测试值验证其余逻辑无错:

SELECT DESCRIPTION, TOTAL_ADMISSION, EMERGENCY, NORMAL      
FROM TABLE (ORDERENTRY.PKG_S04REP00031.ADMISSION_SUMMARY
(P_START_DATE => to_date('01/08/2021', 'dd/mm/yyyy'),
P_END_DATE => to_date('01/09/2021', 'dd/mm/yyyy'),
P_ADMISSION_TYPE    => 'N',
P_ORDER_LOCATION_ID => '替换为实际需要传入的单个部门描述值',
P_LOCATION_ID => 'K01'));

2. 多值参数场景(P_ORDER_LOCATION_ID支持传入集合类型)

如果函数的该参数设计为可接收多个值的集合类型,你需要将子查询结果转为对应集合类型后再传入,不能直接写in子句,示例如下(假设集合类型为PKG_S04REP00031.STR_ARR,即包内定义的字符串数组类型):

SELECT DESCRIPTION, TOTAL_ADMISSION, EMERGENCY, NORMAL      
FROM TABLE (ORDERENTRY.PKG_S04REP00031.ADMISSION_SUMMARY
(P_START_DATE => to_date('01/08/2021', 'dd/mm/yyyy'),
P_END_DATE => to_date('01/09/2021', 'dd/mm/yyyy'),
P_ADMISSION_TYPE    => 'N',
P_ORDER_LOCATION_ID => CAST(MULTISET(SELECT DESCRIPTION FROM DEFINITIONS.DEPARTMENT) AS ORDERENTRY.PKG_S04REP00031.STR_ARR),
P_LOCATION_ID => 'K01'));

3. 函数不支持多值入参的替代方案

如果函数没有设计多值入参,你有两种选择:

  • 修改存储函数内部逻辑,把P_ORDER_LOCATION_ID的匹配逻辑改为in子查询,子查询直接写在函数体内
  • 在外层通过表关联+遍历的方式,批量调用函数后合并结果集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:21:00