powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Передача большого XML -выскакивает 404 ошибка
12 сообщений из 12, страница 1 из 1
Передача большого XML -выскакивает 404 ошибка
    #37405858
faruxP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно, надо что-то поменять в настройках APACH -
Делаю --
For i In ( Select * from T ) loop
htp.p( i.field );
end loop ;
Когда записей мало - порядка 10,20 тысяч - всё хорошо,
но когда таким же образом пытаюсь передать 100 и более - вылетает 404 ошибка - мол страницу не нашел
Поменял TimeOut - сделал побольше - всё равно работает долго, но вылетает ошибка.
В чем причина ??? - крутить APACH или использовать какие нить параметры дополнительные.
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37406101
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For i In ( Select * from T ) loop
htp.p( i.field );
end loop ;
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37406102
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите не туда нажал, сейчас напишу.
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37406118
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DECLARE
LOCATOR CLOB;
STATUS INTEGER;
L VARCHAR2(32767);
I INTEGER;
BEGIN
FOR I IN (SELECT * FROM T) LOOP
LOCATOR := I.FIELD STATUS := 4000;
I := 1;
L := 'jkj';
WHILE LENGTH(L) != 0 LOOP
L := DBMS_LOB.SUBSTR(LOCATOR, STATUS, I);
I := I + STATUS;
HTP.PRN(L);
END LOOP;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
HTP.PRN('Ошибка');
END;
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37406126
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DECLARE
LOCATOR CLOB;
STATUS INTEGER;
L VARCHAR2( 32767 );
I INTEGER;
BEGIN
FOR I IN (SELECT * FROM T) LOOP
STATUS:= 4000 ;
LOCATOR := I.FIELD STATUS;
I :=  1 ;
L := 'jkj';
WHILE LENGTH(L) !=  0  LOOP
L := DBMS_LOB.SUBSTR(LOCATOR, STATUS, I);
I := I + STATUS;
HTP.PRN(L);
END LOOP;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
HTP.PRN('Ошибка');
END;

Что-то я сегодня явно не выспался, прошу модератора удалить мои верхние посты. Выражаю свои глубокие извинения.
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37406652
faruxP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного изменил код
For i In ( Select * from T ) loop
htp.p( i.field );
htp.flush ; <<<<<------------------------ вот здесь
end loop ;

выгрузился большой битый файл с ошибкой
ORA-04030: out of process memory when trying to allocate 16396 bytes (koh-kghu sessi,pl/sql vc2)

Что , я заполнил всю PGA ?
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37407746
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i.field - это clob? Почему htp.p используется, а не htp.prn? И чем вас не устраивает скрипт сверху? только вот тут
Код: plaintext
LOCATOR := I.FIELD STATUS;
заменить на вот это:
Код: plaintext
LOCATOR := I.FIELD;
. Таким образом я выгружал 4гб и больше текста на страницу, без всяких ошибок и прочей лабуды. Зависал только браузер ie6-7-8, но после нескольких секунд выдавал страницу с этим 4гб текстом. Делал я это для теста, так как не понимаю зачем человеку выводить такое количество информации на одну страницу в неранжированном виде. Либо сделайте весь вывод с pagination и, если уж так хочется, то выводите по 10-20 тысяч записей на одной странице, с возможностью просмотра следующих записей.
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37407904
faruxP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый PITMOV , я просто мастерю XML

что бы не быть голословным

l_xml_body - здесь clob

FOR L IN (
Select *
from
T
where UPPER(Trim(uname)) = UPPER(Trim(p_user ))
order by 1,2,7,4,5
) LOOP
l_xml_body := l_xml_body
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_BR)||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_LTC)||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDOGOVOR)||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_DEVICE)||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNUMBER_TEL) ||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_USL ) ||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFSERVICETYPE)||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFACCOUNT) ||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNUMBER_DOGOVOR)||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_ABONENT )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFTYPE_ABONENT )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_ACTIVITY )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNUMBER_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDATE_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDATEIN_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFAPPTYPE )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAMETYPE_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNUMBER_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFSTATUS_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDATE_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDATEEND_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFCLOSE_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFADDRESS_TEL )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFCONDITION )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDATE_DES_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_DES_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNOTE_DES_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFCOUNT_DES_APP )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDATE_DES_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNAME_DES_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFNOTE_DES_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFCOUNT_DES_ORD )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFZONA_A )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.APP_REG_DELTA )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.SYS_ZAK_DELTA )||'</Data></Cell>'
||'<Cell ss:StyleID="s23"><Data ss:Type="String">'||clr(L.DFDELETE )||'</Data></Cell>' ;
PH2( '<Row>'||l_xml_body
||'</Row>' ) ;
l_xml_body := '';
END LOOP ;

описание процедуры

procedure PH2( c clob ) is
tmp varchar2(32000);
pos number := 1;
len number;
begin
len := dbms_lob.getlength(c);
loop
exit when pos > len;
tmp := dbms_lob.substr(c, 32000, pos);
htp.prn(tmp);
htp.flush ; << ---------------------- тперь вставил здесь
pos := pos + 32000;
end loop;
exception when no_data_found then
-- htp.p('данных не найдено');
null;
end;

процедура clr - второстепенный характер - выкидывает из содержимого полей \/ <>
после того как вставил здесь ( см выше ) стала присылать "недорисованный файл"

так вот когда записей мало - порядка 10 -30 тыс - всё хорошо, но вот когда их > 50
тут и начинаются грабли
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37407937
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы можете сначала смастерить весь xml, в одном клоб файле, а потом вывести этот clob. Тем самым вы будете вызывать функцию PH2, один раз, а не 100 тысяч раз.
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37407948
faruxP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В файле OS где стоит сервер ? Или в поле ( типа CLOB ) таблицы ?
Первое не возможно - нету доступа, а вот второе - буду очень долго думать, да и где гарантия что делая
PRN из поля этой таблицы всё прокатит гладко :(
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37407987
PITMOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я к сожалению не понимаю в какой момент у Вас формируется этот xml. Посмотрите как долго он формируется, если это занимает часы, или минут 20-30, то конечно это ужасно и тут надо думать, как бы сделать это быстрее, особенно, если в этот момент клиент ждет ответа от сервера. Если же clob формируется моментально( я сейчас имею ввиду формирование не в таблице, а в процедуре, в поле типа CLOB, то вызовите процедуру PH2 один раз, для этой переменой.) Если вам одной переменной типа CLOB не хватает, то есть результат больше 4гб (монстр-файл с текстовыми данными), то сделайте тип данных as table of clob, хотя я все же не представляю для себя зачем это все вываливать пользователю в таких размерах. Повторюсь 4гб символов я вываливал на страницу, все работало.
...
Рейтинг: 0 / 0
Передача большого XML -выскакивает 404 ошибка
    #37408026
faruxP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Желание клиента - получить всё, а именно , есть таблица , необходимо вернуть её содержимое в формате XML,
прилепить к ффйлу расширение XLS, что бы потом смотреть всё это Excel ем , я это делаю через
HTP.PRN - когда сервер возвращает все строки , IE спрашивает сохранить файл или открыть, собственно всё.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Передача большого XML -выскакивает 404 ошибка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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