首页 > 解决方案 > PLSQL使用数组从表中选择到变量中

问题描述

我正在尝试使用数组从表中选择一些记录到变量 init_av_days 中,但它没有成功。init_av_days 将在此选择查询之后提交到​​另一个表。你建议我怎么做?

declare

    myarray  APEX_APPLICATION_GLOBAL.VC_ARR2;
    init_av_days varchar2(10);

begin

    myarray := APEX_UTIL.STRING_TO_TABLE(:P592_AVAILABILITY_DAYS);

    For i in 1.. myarray.count loop

        select  availability_days 
        into init_av_days 
        from sl_available_days 
        where location_code = :P592_LOCATION_CODE 
        and availability_days = myarray(i);

    end loop;

end;

标签: sqloracleplsql

解决方案


init_av_days 将在此选择查询之后提交到​​另一个表

最好的?我会说,完全跳过 PL/SQL。像这样的东西:

insert into another_table (some_column)
select availability_days 
from sl_available_days 
where location_code in = (select regexp_substr(:P592_LOCATION_CODE, '[^:]+', 1, level)
                          from dual
                          connect by level <= regexp_count(:P592_LOCATION_CODE, ':') + 1
                         )
  and availability_days = <I don't know what APEX_APPLICATION_GLOBAL.VC_ARR2 contains>

这段代码应该修复,因为我不知道最后一个条件;如果你知道怎么做,那就去做。如果没有,请解释其中的内容vcc_arr2,也许我们可以提供帮助。


推荐阅读