【问题标题】:Most efficient way to parse a Comma Separated list in ApEx在 ApEx 中解析逗号分隔列表的最有效方法
【发布时间】:2016-07-04 17:52:08
【问题描述】:

我仍在开发我的第一个单独的 Oracle ApEx(Application Express)应用程序,所以我相信这对你们中的一些人来说已经过时了。我试图查找我想做的事情,但我不知道该查找什么。如果已经有一个帖子可以回答这个问题,那么我为重复道歉,但我已经在这里搜索了大约两个小时试图弄清楚这一点。

我对解决方案持开放态度,因为我还没有为应用程序的这一部分构建任何东西,所以我没有被锁定在一种固定的方式上。如果有更好的方法,请告诉我。

我想从用户那里获得一个逗号分隔(或分号,或冒号分隔)的列表。然后我想获取这些数据并将其写入一个表,每个值都在自己的行中。

输入示例:

X12345678, X22345678, X32345678 (and so on)

输入的数字随后将在不同的表格中查找,因为我们使用非识别 PIDM 数字(任何使用过 Ellucian's Banner 的人都会明白)。这个 select 语句很容易检索到这个数字:

Select spriden_pidm 
from spriden 
where spriden_change_ind is null
  and spriden_id = :P5_STU_ID

然后,它会这样存储在一个表中:

数据存储示例:

   ID      |  Semester  |  Creating User  | Created Date | Data Origin
012345678  |   201640   |      JDOE1      |    sysdate   |  ApEx : 130
022345678  |   201640   |      JDOE1      |    sysdate   |  ApEx : 130

等等。

问题 1:我假设循环将是使用正则表达式完成此任务的最佳方式。这是一个正确的假设吗?

问题 2:ApEx 是否已经内置了可以更好和/或更快处理此问题的内容?

Apex 版本 5.0,Oracle 12c

【问题讨论】:

    标签: oracle csv parsing oracle-apex


    【解决方案1】:

    APEX_UTIL.string_to_table

    并使用逗号作为第二个参数

    【讨论】:

    • 谢谢你。由于时间限制,我无法使用这种方法,尽管它似乎正是我所需要的。我们最终编写了自己的循环,基本上完成了同样的事情。再次感谢您。
    【解决方案2】:

    如前所述,由于我们在部署中分秒必争,最终编写了一个类似于 APEX_UTIL.string_to_table(感谢 Rob van Wijk)完成的循环:

    declare
    
    v_id varchar2(4000) := :P5_NEW_IDS;
    
    begin
    
      for i in 1..regexp_count( v_id, ',' ) + 1 loop
    
      insert into zresadddrop.zsrintl(zsrintl_pidm,
                                    zsrintl_term_code_eff,
                                    zsrintl_created_by,
                                    zsrintl_created_date,
                                    zsrintl_data_origin)
      select distinct spriden_pidm
           , :P5_Term_Code
           , :app_user
           , sysdate
           , 'ApEx: '||:app_id
    
      from spriden
    
      where spriden_change_ind is null
        and spriden_id = trim(zgeneral.get_token(v_id,i));
    
    end loop;
    commit;
    
    end; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多