Моя цель - получить данные CLOB из базы данных в текстовое поле в приложении Oracle Apex, а затем сохранить их в базе данных из самого текстового поля при нажатии кнопки «Сохранить». У меня также есть некоторые другие поля на этой странице (как текстовые поля), которые не являются полями CLOB, и их также необходимо сохранить в базе данных при нажатии кнопки.
Для этого я использую следующий код в разделе «Атрибут HTML-заголовка и тела» страницы. Это используется для получения / сохранения CLOB в текстовое поле / базу данных. Обратите внимание, что простого кода PLSQL внутри элемента Apex будет достаточно, чтобы делать то, что я делаю здесь, но только если данные CLOB меньше 32 Кбайт. Я использую эту функцию из-за ограничения в 32 КБ в plsql в вершине (и ограничения в 4 КБ при использовании sql).
function clob_set(){
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('P5075_RESPONSETEXT',p.responseText);
$x_Hide('AjaxLoading');
}else{return false;}
}
);
if(!$v_IsEmpty('P5075_STYLESHEET')){clob_ob._set($v('P5075_STYLESHEET'))};
}
function clob_get(){
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('P5075_STYLESHEET',p.responseText);
$x_Hide('AjaxLoading');
}else{return false;}
}
);
clob_ob._get();
}
Я вызываю одну из функций в разделе "Атрибут тела HTML страницы" как onload = "javascript: clob_get ();"
Для этого у меня есть PLSQL после процесса заголовка.
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 xslt
INTO l_clob
FROM schematransform
WHERE namn = 'f';
apex_collection.add_member(p_collection_name => 'CLOB_CONTENT',p_clob001 => l_clob);
end;
Это работает нормально. Теперь у меня есть процесс plsql, который сохраняет данные, введенные в поля CLOB и не-CLOB, в базу данных. Но как только страница отправляется, я получаю «неверный HTTP-запрос».
Может ли кто-нибудь объяснить, почему это происходит и как я могу это решить?