打开表单时出现ORA-20987错误的原因及实现正确性咨询
问题分析与解决
错误原因
- SQL语句写法错误:Set Value动作的SQL不需要
INTO :P3_FIRST_NAME_E子句。APEX的Set Value会自动将查询返回的单个值赋值给目标项,多余的INTO子句导致APEX错误尝试绑定P3_FIRST_NAME_E,触发ORA-20987报错。 - 影响元素项配置错误:当前设置为
P3_FIRST_NAME_A,但实际应指定为P3_FIRST_NAME_E——这才是需要被赋值的目标项。 - 页面加载触发问题:如果
P3_FIRST_NAME_A在页面打开时有默认值,Change事件会立即触发,错误的SQL语句会直接抛出错误。
当前实现方式的问题
你的需求逻辑方向是对的,但配置细节存在多处错误:
- 错误地在SQL语句中使用
INTO子句尝试赋值 - 影响元素项指向了源输入项而非目标赋值项
- 未在Set Value动作中明确指定目标赋值项
修正步骤
修改动态动作的「真动作」配置:
- 保持「设置类型 = SQL语句」不变
- 将SQL语句改为:
SELECT FORIEGN_NAME FROM sys_dic_names WHERE native_name = :P3_FIRST_NAME_A
- 在Set Value动作的「设置项」中选择
P3_FIRST_NAME_E(这是核心的赋值目标配置) - 把「影响元素项」修改为
P3_FIRST_NAME_E - 保留「提交项 = P3_FIRST_NAME_A」(这部分配置正确,用于将输入的阿拉伯语名称提交到数据库查询)
内容的提问来源于stack exchange,提问作者Ziad Adnan
相关产品推荐
相关产品推荐

