Oracle APEX:立即执行收集

时间:2017-12-18 15:25:02

标签: plsql oracle-apex execute

我有以下代码:

Error: LinkageError occurred while loading main class Bar
    java.lang.ClassFormatError: Illegal class modifiers in class Foo: 0x200

此代码与提议的here非常相似,但我循环了25列。 Oracle Apex的问题是PL / SQL允许的最大字符数,因此我无法只编写25个declare y pls_integer := 0; v_msg varchar2(4000); plsql varchar(4000); begin if not apex_collection.collection_exists(p_collection_name=>'P16_COLLECTION') then wwv_flow.debug('No Apex collection found!'); else for x in (select * from apex_collections where collection_name = 'P16_COLLECTION' and seq_id > 1 order by seq_id) loop y := y+1; FOR i IN 1..25 LOOP plsql := 'begin apex_collection.update_member_attribute (p_collection_name=> ''P16_COLLECTION'', p_seq=>' || TO_CHAR(x.seq_id) || ',p_attr_number =>' || TO_CHAR(i) || ',p_attr_value=>wwv_flow.g_f' || TO_CHAR(i, 'FM00') || '(' || TO_CHAR(y) || ')); end;'; wwv_flow.debug(plsql); EXECUTE IMMEDIATE plsql; END LOOP; end loop; end if; exception when others then v_msg := ''||sqlerrm; wwv_flow.debug('ERR: '||v_msg); end; - 调用。

但是我没有收到错误update_member_attribute

我三重检查了集合no data found是否存在。

1 个答案:

答案 0 :(得分:0)

  

Oracle Apex的问题是PL / SQL允许的最大字符数

我不确定我是否理解这句话。它是您使用的PL / SQL。您将本地PLSQL变量声明为VARCHAR2(4000)。你为什么不指定它的最大允许尺寸32767?那会有帮助吗?

此外,说你没有找到NO-DATA-FOUND异常:你肯定这段代码引出了它吗?因为,那里没有SELECT语句...你在游标FOR循环中使用的语句不能引发NO-DATA-FOUND;更新。因此,我认为它必须是别的东西。

启用DEBUG,运行页面, - 当出现错误时 - 查看调试结果并查找罪魁祸首。