Проблема в последней строке вашего кода. Все переменные состояния сеанса (например, P10_WP
) имеют размер VARCHAR2
и ограничены 32767 символами. Вы можете видеть это в вызывающих их функциях APEX ( пример ). Таким образом, вы не можете назначить более 32 тыс. Символов для элемента страницы PL / SQL .
Но очевидно, что вы можете поместить более 32 тыс. Символов в элемент формы HTML! Так что это неловкий обходной путь - вы должны получать данные clob внутри и вне элемента формы HTML без использования элементов страницы APEX. Обычно это делается путем записи clob в коллекцию, а затем с помощью AJAX-вызовов к процессу приложения для его получения, поскольку у JavaScript нет проблем с ограничениями символов.
Похоже, что вы частично продвинулись в этом с вашей коллекцией TEXT
, но вам все равно придется написать свой собственный процесс приложения по требованию, чтобы вы могли загрузить коллекцию в JavaScript и поместить ее в элементе формы HTML оттуда. Будет проще, если вы используете встроенную функциональность apex.ajax.clob
с коллекцией CLOB_CONTENT
.
Я просмотрел несколько статей об этом, и эта довольно хорошо написана и проста .
Краткая версия - изменить название вашей коллекции в вашем коде на CLOB_CONTENT
, затем поместить эту функцию JavaScript на вашу страницу и вызвать ее.
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('P10_WP',p.responseText);
$x_Hide('AjaxLoading');
}else{return false;}
}
);
clob_ob._get();
}