私はCREXページ、APEX(バージョン5)のフォームを持ち、対応するテーブルには2つのCLOBフィールドがあります。私は同じページの両方のフィールドを変更する必要があります。私は非常に普及していると思われる知っている解決策、コレクションAPEX_COLLECTIONを使用する解決策、およびCLOBフィールドをロードし、変更された値を更新するプロセスを認識しています。ORACLE APEX 5のページで複数の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上の2つのCLOBフィールドのための2つ(またはそれ以上)のスペースが必要テーブル。
別の名前の同じページに2つの異なるAPEX_COLLECTIONSを作成しようとしましたが、動作しません。
解決策を使用して、同じページで2つ以上のCLOBファイルをサポートするにはどうすればよいですか? –
あなたは今何を止めていますか?あなたの質問は、コレクション内の1つのクローブの制限に関するものでした。独自の表を作成する場合は、複数のCLOBを作成できます。 –
私はテーブルを持っています。コレクションを使用して、2つのCLOBフィールドを表からロード/挿入します。コレクションは1つのCLOBフィールドしかサポートしていないので、ここでは問題があります。 2つのCLOBフィールドを持つ別のテーブルの作成がどのように役立つかはわかりません。 –