APEX192升级242旧的CSV导入验证时错位问题

适用版本

  1. 升级前版本[[Oracle APEX19.2]]
  2. 升级后版本[[Oracle APEX24.2]]
  3. APEX补丁版本 24.2.4

背景

昨日,我们将一个基于Oracle APEX 19.2的环境成功升级至24.2版本。然而,今日用户反馈称,在使用数据上传导入功能时,数据验证页面出现了布局错位的问题,具体表现为某些元素的位置不正确,但数据是可以正常导入只是显示有问题。以下为问题截图: OsXM1-2025-11-20-14-28-12 对比19.2 OsXM1-2025-11-20-13-29-13

问题

经过细致检查,我们发现该页面的列标题是动态生成的。进一步调查后,确认了问题根源在于生成字符串格式的过程中,半角冒号被替换成了全角冒号。具体代码如下所示: OsXM1-2025-11-20-13-32-13

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
declare  
    l_string varchar(32767);
begin
    l_string := wwv_flow_lang.system_message('DATA_LOAD.SEQUENCE_ACTION');
    apex_debug.warn(l_string); -- 个人加的打印信息
    for l_heading in ( select c005 as label
                         from apex_collections
                        where collection_name = 'LOAD_COL_HEAD'
                        order by seq_id )
    loop
        l_string := l_string || ':' || l_heading.label;
    end loop;
    apex_debug.warn(l_string);
    return l_string;
end;

解决方案

针对此问题,我们考虑了两种解决路径:

  1. 全局搜索并替换:在应用中全面搜索涉及该字符串的所有位置,并将全角冒号替换为半角冒号。
  2. 统一调整全局变量:鉴于这是一个全局变量,若能统一进行调整,则更为理想。

通过初步尝试,我们发现将全角冒号替换为半角冒号确实解决了问题。接下来,我们深入探索了第二种方法,即直接修改全局变量。

深入探究

这个变量似乎有点类似共享组件中的快捷方式,检查后无果,又看了下平台视图也没发现对应的信息, AI和bing了一波也没发现好的方向. 只能去扒下数据库中wwv_flow_lang.system_message的代码了.
OsXM1-2025-11-20-13-55-43
扒了下平台的代码,也看不到代码详细. 猜测似乎是有表记录着该信息,就是不知道记录的是怎样格式的.
OsXM1-2025-11-20-13-57-39
毕竟平台存在一列中多个值拼一起的情况
OsXM1-2025-11-20-14-00-57

似乎有创建的API.准备加一个新值测试下,结果报错,由报错信息可见APEX_240200.WWV_FLOW_MESSAGES$_UQ确实有表记录.找到表了接下来就简单了

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
BEGIN

    for c1 in (select workspace_id
                from apex_workspaces
                where workspace = 'APEX') loop
            apex_util.set_security_group_id( c1.workspace_id );
            exit;
        end loop;
    wwv_flow_lang.create_message(
        p_application_id => 109,
        p_name => 'DATA_LOAD.SEQUENCE_ACTION1',
        p_language => 'ch',
        p_message_text => '序列:操作'
         );
    commit;
END;

OsXM1-2025-11-20-14-08-42

1
select *  froM APEX_240200.WWV_FLOW_MESSAGES$ where NAME='DATA_LOAD.SEQUENCE_ACTION';

OsXM1-2025-11-20-14-12-04
直接来个UPDATE,再验证下该问题是否还在经测试已经修复了.
OsXM1-2025-11-20-14-15-29

后续

推测,这个问题可能是由于中文支持导致的字符替换。目前尚不清楚Oracle APEX官方是否会在此后的补丁中修复这一问题。

这是一个脚注 1


  1. 参考文献1:  ↩︎

Licensed under CC BY-NC-SA 4.0
最后更新于 2025-12-03 14:34
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计