powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Загрузка в форму > 32000 символов
11 сообщений из 11, страница 1 из 1
Загрузка в форму > 32000 символов
    #39885425
baza906
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго вечера.

Имеется задача загружать в форму значение из CLOB-поля таблицы, иногда превышающее допустимые 32тыс символов для VARCAHR2. Пробовал организовывать цикл с помощью dbms_log.substring и шагом в 32000, но в этом случае выводится только значение первой итерации.
Имеется ли у кого-нибудь опыт реализации подобного или понимание, возможно ли реализовать эту задачу?
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39885552
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baza906,

Добрый день.
Выгрузить куда? В поле для редактирования? Или просто для отображения.
Разные задачи, разные решения.
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39885630
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baza906,
dbms_log.substring и шагом в 32000, но в этом случае выводится только значение первой итерации.

Вообще действительно CLOB в апексе это боль.
Я решал так.
Получаю на страничку сначала размер.
Потом js пока не закончился размер читаю по 32к.
И складываю в перемеренную.
Потом её использую.
Это чтение.
Запись в базу наоборот ,но у меня опыта записи не было.(Только чтение на страничку)
Записи были только blop и у апекса есть стандартная обработка BLOB записи.
Попробуйте её прикрутить.
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39885747
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автор так и не сказал цель.
Если просто считать и вывети на страницу, никакого js не надо, htp.p все выведет.
Для редактирования, в апексе только один элемент способен такие объемы сгенерировать и обработать, это RichTextEdit, тут дествительно боль, но решаемая, как для считывания так и дя загрузки.
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39885824
baza906
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,
цель: выводить значение поля CLOB в форму с возможностью редактирования и сохранения обратно в базу
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39885831
baza906
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
спасибо! поищу информацию о библиотеке.
правильно вас понял: вы считывали из базы по 32тыс символов и сохраняли результат в javascript-переменную? Я с APEXом только познакомился, пытаюсь сделать доработку с минимальными изменениями существующего проекта. А там получение данных сделано с помощью pl/sql функций (скриншот прикладываю)
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39885888
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39885999
baza906
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel, спасибо! буду пробовать
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39888497
baza906
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,
почти все получилось, осталось сохранение в базу. на данный момент не получается обновить коллекцию из текстового окна - сохраняется вариант, изначально загруженный из базы, внесенные изменения игнорируются.
Возникло несколько вопросов по присланной вами статье, просьба по возможности подсказать. Касаются скрипта clob_set из ответа.

'P5075_RESPONSETEXT' - текст в textarea, название задано пользователем
'P5075_STYLESHEET' - тоже пользовательское название, что это за элемент сходу не могу определить
apex.submit('SUBMIT'); - значение "SUBMIT" здесь менять не нужно, оно не зависит от имен имеющихся кнопок
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39888904
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baza906,

Вы сначала должны вызвать javascript для сохранения, а потом делать submit, как сделано у меня.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function setClob(pRequest) {
	var putClob = new apex.ajax.clob(  
		function(){  
			var rs = p.readyState  
			if(rs == 1||rs == 2||rs == 3){  
				$x_Show('AjaxLoading');  
			}else if(rs == 4){  
				$s('P416_BODY',p.responseText);  
				$x_Hide('AjaxLoading');  
				apex.submit(pRequest);
			}else{
				return false;
			}  
		}  
   );  
	if (!apex.item("P416_BODY").isEmpty()){
		putClob._set($v('P416_BODY'))
	} else {
		apex.submit(pRequest);
	};  
};


А на кнопке, например Создать, вот такой вызов.

Код: javascript
1.
javascript:setClob('CREATE');
...
Рейтинг: 0 / 0
Загрузка в форму > 32000 символов
    #39888986
baza906
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel, спасибо вам огромное за помощь!
В итоге удалось разобраться
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Загрузка в форму > 32000 символов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]