Oracle APEX 22.2.0中Chrome/Edge保存交互式网格/报表遇ORA-01722错误
解决Oracle APEX 22.2.0交互式网格/报表Chrome/Edge保存时ORA-01722错误
问题本质
这是APEX 22.2.0版本在Chrome、Edge这类Chromium内核浏览器下的已知兼容性bug,和查询语句无关——哪怕用select 1 from dual这种极简查询也会触发。原因是前端提交保存请求时,对数值型字段的解析逻辑出了问题,把数值当成字符串传给数据库,导致ORA-01722错误;Firefox因为参数处理逻辑不同,所以不受影响。
临时修复方案
- 给目标区域加动态动作,强制修正提交参数格式:
- 创建动态动作,触发条件选「按钮点击」,目标选保存按钮
- 动作类型选「执行JavaScript代码」,粘贴以下代码(记得替换
YOUR_REGION_STATIC_ID为你的区域静态ID):var ig = apex.region("YOUR_REGION_STATIC_ID").widget().interactiveGrid("getViews", "grid"); var model = ig.model; model._data.forEach(function(row) { Object.keys(row).forEach(function(key) { if (typeof row[key] === 'string' && !isNaN(row[key]) && row[key].trim() !== '') { row[key] = Number(row[key]); } }); });
- 临时用Firefox操作(仅作为权宜之计)
- 降级到APEX 22.1.x版本,该版本无此兼容性问题
官方问题与修复情况
- 这是Oracle官方已确认的bug,属于Chromium浏览器环境下APEX前端的参数处理错误
- 该问题在APEX 23.1及后续版本中已被修复,升级到新版本即可彻底解决
内容的提问来源于stack exchange,提问作者Filip
相关产品推荐
相关产品推荐

