如何在ORACLE APEX 5上的页面上使用多个CLOB字段

时间:2016-07-07 18:49:43

标签: oracle oracle-apex clob

我有一个CRUD页面,APEX(版本5)中的表单,相应的表有两个CLOB字段。我需要修改同一页面上的两个字段。我知道一个非常普遍的已知解决方案,它使用集合APEX_COLLECTION和Processes来加载CLOB字段并更新修改后的值。

/** PL/SQL for loading the CLOB field */
declare
l_clob clob:= empty_clob();

begin
   if apex_collection.collection_exists(p_collection_name=>'CLOB_CONTENT') then apex_collection.delete_collection(p_collection_name=>'CLOB_CONTENT');
    end if;
 apex_collection.create_or_truncate_collection(p_collection_name=>'CLOB_CONTENT');
    dbms_lob.createtemporary( l_clob, false, dbms_lob.SESSION );

    select DS_CONCLUSAO
    into l_clob
    from CR_RELATORIO    
    where ID_RELATORIO = :P15_ID_RELATORIO; 

    apex_collection.add_member(p_collection_name => 'CLOB_CONTENT',p_clob001 => l_clob);
end;

/** Javascript Functions for loading and setting the field on the page */

<script type="text/javascript">

function clob_set(campo, operacao){  
        var clob_ob = new apex.ajax.clob(  
            function(){  
                var rs = p.readyState  
                if(rs == 1||rs == 2||rs == 3){  
                    $x_Show('AjaxLoading');  
                }else if(rs == 4){  
                    $s(campo,p.responseText);  
                    $x_Hide('AjaxLoading');  
                    apex.submit(operacao);
                }else{return false;}  
            }
        );  

        if (!apex.item(campo).isEmpty()) {
            clob_ob._set($v(campo));
        }
    }  

    function clob_get(campo){  
        if ($v(campo) != null && $v(campo) != '') {
          var clob_ob = new apex.ajax.clob(  
            function(){  
                var rs = p.readyState  
                if(rs == 1||rs == 2||rs == 3){  
                    $x_Show('AjaxLoading');  
                }else if(rs == 4){  
                    $s(campo,p.responseText);  
                    $x_Hide('AjaxLoading');  
                }else{return false;}  
            }
          );  
          clob_ob._get();  
        }
    }


</script>

我正在尝试使用此解决方案,但问题是:该集合只有一个空间用于CLOB字段,我需要两个(或更多)空间用于DB表上的两个CLOB字段< /强>

我尝试在同一页面上创建两个不同的APEX_COLLECTIONS,名称不同,但不起作用。

1 个答案:

答案 0 :(得分:1)

APEX_COLLECTION只是会话老化后自动清除的表的一个方便的包装器。

在你的情况下,我自己创建了一个表,将SESSION_ID作为密钥的一部分,然后为它实现我自己的清除过程。