powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Регионы
44 сообщений из 44, показаны все 2 страниц
Регионы
    #36451034
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!!!

У меня такой вопросик. Есть регион и есть таблица. в которой есть поле типа БЛОБ. В нем храниться хтмл-код, который становится источником для региона. Как мне поменять этот источник, если требуется использовать другую запись?

Пыталась так, но увы...

Код: plaintext
1.
2.
3.
4.
5.
6.
DECLARE
temp VARCHAR2( 2500 );
BEGIN

SELECT BDATA INTO temp FROM HTM_D WHERE ID= 82 ;
:report:=tmp;
END;

Регион называется report. Помогите, пожалуйста.
...
Рейтинг: 0 / 0
Регионы
    #36451117
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге пришла к такому коду:

Код: plaintext
1.
2.
3.
4.
5.
DECLARE
temp VARCHAR2( 25000 );
BEGIN
SELECT CDATA INTO temp FROM htm_d where id= 82 ;
htp.p(temp);
END;

Однако он все также не заполняет регион....
...
Рейтинг: 0 / 0
Регионы
    #36451163
dvksqlru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Katerin,

100% связано с порядком отображения элементов при загрузке. Рекомендую поэкспериментировать с "Process Point", и, не забыть доложить о результатах...
...
Рейтинг: 0 / 0
Регионы
    #36451218
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dvksqlruKaterin,

100% связано с порядком отображения элементов при загрузке. Рекомендую поэкспериментировать с "Process Point", и, не забыть доложить о результатах...

:)

Данные-то я извлекла. Через htp.p смотрятся. а как "загнать" их в регион?
...
Рейтинг: 0 / 0
Регионы
    #36451317
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KaterinУ меня такой вопросик. Есть регион и есть таблица. в которой есть поле типа БЛОБ .

Код: plaintext
1.
2.
3.
4.
DECLARE
temp VARCHAR2( 2500 );
BEGIN
  SELECT BDATA INTO temp FROM HTM_D WHERE ID= 82 ;
...
KaterinВ итоге пришла к такому коду:

Код: plaintext
1.
DECLARE
temp VARCHAR2( 25000 );


Так BLOB или VARCHAR2, и какого размера?

PS: Гляньте в сторону региона с типом PL/SQL Dynamic Content.
...
Рейтинг: 0 / 0
Регионы
    #36451347
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я и пытаюсь указать источник для региона с динамическим контентом.
А в итоге, незнаю как уже полученные данные назначить в качестве его источника

Код: plaintext
1.
2.
3.
4.
5.
DECLARE
temp clob;
BEGIN
SELECT CDATA into temp FROM HTM_D where id= 121 ;
--Данные получены в темп, но они не отображаются в регионе
END;

Регион - PL|SQL anonim
...
Рейтинг: 0 / 0
Регионы
    #36451366
non-apexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin, и не отобразятся, пока вы не преобразуете clob в строку и не сделаете htp.p(строка). Так как размер строки ограничен, то правильно будет в цикле считывать подстроки из clob в буферную строку и и вот эту строку выводить.
...
Рейтинг: 0 / 0
Регионы
    #36451436
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin,

Ещё раз: у Вас какого типа поле таблицы: B LOB, C LOB, VARCHAR2? Что в этом поле лежит: HTML, картинка, просто текст?
...
Рейтинг: 0 / 0
Регионы
    #36451469
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerKaterin,

Ещё раз: у Вас какого типа поле таблицы: B LOB, C LOB, VARCHAR2? Что в этом поле лежит: HTML, картинка, просто текст?

хтмл код с clob

он успешно передается в temp, выводится на страницу через htp.p, но никак не хочет отображаться в рамках региона
...
Рейтинг: 0 / 0
Регионы
    #36451534
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerinвыводится на страницу через htp.p, но никак не хочет отображаться в рамках региона

Что-то не вяжется. Если на страницу выводится, то какие проблемы? Сделайте пример на apex.oracle.com.
...
Рейтинг: 0 / 0
Регионы
    #36451546
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerKaterinвыводится на страницу через htp.p, но никак не хочет отображаться в рамках региона

Что-то не вяжется. Если на страницу выводится, то какие проблемы? Сделайте пример на apex.oracle.com.

:()
Так мне необходимо вывести в регион, а не на саму страницу
...
Рейтинг: 0 / 0
Регионы
    #36451668
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin,

Вам нужно:
0. Создать регион типа PL/SQL Dynamic Content.
1. В его Source вписать PL/SQL-код, который будет выбирать CLOB-значение из таблицы и по частям, используя цикл, DBMS_LOB и HTP.P, выводить это значение.

Вот примитивный пример .
...
Рейтинг: 0 / 0
Регионы
    #36451906
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLer,

кажется поняла Вас. Правда кода в примере не увидела, но получилось

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE
temp clob;
BEGIN

FOR c1 in (SELECT CDATA into temp FROM HTM_D)

LOOP

    htp.p('11');
    htp.p(temp);
    htp.p('11');

END LOOP;

END;

В таком виде не выводится Точнее выводится все, кроме самого силоба
...
Рейтинг: 0 / 0
Регионы
    #36451932
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin,

ну это Вы уже саму себя перехитрили. Либо пользуйтесь курсорной переменной с1, либо (если на самом деле цикла нет) выбирайте непосредственно в temp и используйте её.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
BEGIN

  FOR c1 in (SELECT CDATA FROM HTM_D)
  LOOP

    htp.p('11');
    htp.p(c1.CDATA);
    htp.p('11');

  END LOOP;

END;

Или

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
  temp clob;
BEGIN

  SELECT CDATA into temp FROM HTM_D;

  htp.p('11');
  htp.p(temp);
  htp.p('11');
exception
  when no_data_found then
    htp.p('Данных нет');
END;
...
Рейтинг: 0 / 0
Регионы
    #36451988
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerKaterin,

ну это Вы уже саму себя перехитрили.

Спасибо за комплимент :)

В итоге

Простая процедура без указания id

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
  temp clob;
BEGIN

  SELECT CDATA into temp FROM HTM_D;

  htp.p('11');
  htp.p(temp);
  htp.p('11');
exception
when no_data_found then
    htp.p('Данных нет');
END;

выдает: ORA-01422: Точная выборка возвращает количество строк больше запрошенного

А если указываешь id

Код: plaintext
...FROM HTM_D where id= 121 

то данные выводятся на саму страницу, а не в регион

В общем, проблематично одну отдельную запись вывести в регион, а казалось бы такая необходимая процедура...
...
Рейтинг: 0 / 0
Регионы
    #36452006
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin,

давайте по шагам. Вам нужно вывести CLOB из одной записи или из всей таблицы?
...
Рейтинг: 0 / 0
Регионы
    #36452015
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerKaterin,

давайте по шагам. Вам нужно вывести CLOB из одной записи или из всей таблицы?

Из одной конкретной записи по id, соответственно хтмл-код - это содержимое поля этой записи типа clob
...
Рейтинг: 0 / 0
Регионы
    #36452079
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот нашла какой-то код,изменила его

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DECLARE
    fil BFILE;
    pos INTEGER:=  2147483647 ;
    pattern RAW;
BEGIN
SELECT CDATA INTO fil FROM HTM_D WHERE ID = 121 ; 
dbms_lob.fileopen(fil, dbms_lob.file_readonly); 
pattern := dbms_lob.substr(fil,  255 , pos); 
dbms_lob.fileclose(fil); 
END; 

Но :(

ORA-06550: Строка 5, столбец 13: PLS-00215: Ограничение длины строки символов должно быть в диапазоне (1 .. 32767) ORA-06550: Строка 7, столбец 8: PL/SQL: ORA-00932: несовместимые типы данных: ожидается NUMBER, получено CLOB ORA-06550: Строка 7, столбец 1: PL/SQL: SQL Statement ignored

Если что, нашла здесь: http://vladweb.narod.ru/help/oracle_lob.htm
...
Рейтинг: 0 / 0
Регионы
    #36452277
non-apexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin, что-то вы здесь все напутали, делаете select в дескриптор файла. Ведь правильный был подход.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare 
  c clob;
  tmp varchar2( 32767 );
  pos number :=  1 ;
  len number;
begin
  select bdata into c from htm_d where id= 82 ;
  len := dbms_lob.getlength(c); 
  -- а вот здесь задача выдачи содержимого clob через htp.p
  loop 
    exit when pos > len;
    tmp := dbms_lob.substr(c,  32767 , pos);
    htp.p(tmp);
    pos := pos +  32767 ;
  end loop;
exception when no_data_found then
  htp.p('данных не найдено');
end;

Как-то так. Правда, этот код не проверял.
...
Рейтинг: 0 / 0
Регионы
    #36452304
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
%(

По прежнему выводит мимо региона, просто на страницу... правда теперь еще и кодировка cyr слетела...
...
Рейтинг: 0 / 0
Регионы
    #36452326
non-apexoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin, нужен пример html из вашего clob. Дело, скорее всего, именно в нём.
...
Рейтинг: 0 / 0
Регионы
    #36452356
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
non-apexoidKaterin, нужен пример html из вашего clob. Дело, скорее всего, именно в нём.

CDATA
<html>
<body dir=LTR bgcolor="#ffffff">
<!-- Created by Oracle Reports -->

<div style="position: absolute; top:0pt;left:1pt;">

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
</div>
<style>#f1{font:bold 10pt "Arial";color:# 000000 }</style>
<span style="position:absolute;top:4pt;left:36pt" id=f1>ÏðîÊîíò</span>
<style>#f2{font:8pt "Arial";color:# 000000 }</style>
<span style="position:absolute;top:4pt;left:570pt" id=f2> 19 - 01 - 10   08 : 33 </span>
<style>#f3{font:italic 9pt "Arial";color:# 000000 }</style>
<span style="position:absolute;top:12pt;left:345pt" id=f3>ÎÀÎ "ÑÏá ÊÏÊ"</span>
<style>#f1a2a661{color:# 000000 ;}</style>
<style>#f2a2a661{color:# 000000 ;}</style>
<style>#f3a2a661{color:# 000000 ;}</style>
<div style="position:absolute;top:2pt;left:661pt" id=f2>Ñòð. <span id=f1a2a661> 1 </span><span id=f2a2a661> èç </span><span id=f3a2a661> 1 </span></div>
<style>#f4{font:11pt "Arial";color:# 000000 }</style>
<span style="position:absolute;top:26pt;left:364pt" id=f4>ÊÄÌ 1 </span>
<style>#f5{font:bold 11pt "Arial";color:# 000000 }</style>
<span style="position:absolute;top:44pt;left:279pt" id=f5>ÂÛÐÀÁÎÒÊÀ ÊÀÐÒÎÍÀ ÏÎ ÌÀÐÊÀÌ </span>
<span style="position:absolute;top:62pt;left:237pt" id=f5>çà ïåðèîä ñ</span>
<span style="position:absolute;top:62pt;left:309pt" id=f5>********************</span>
<span style="position:absolute;top:62pt;left:403pt" id=f5>ïî</span>
<span style="position:absolute;top:62pt;left:421pt" id=f5> 11 - 01 - 10   23 : 59 : 59 </span>
<div style="position:absolute;top:83.7pt;left:36.0pt;width:902.6;height:54.4;padding-top:46.8;font:0pt Arial;border-width:1.4; border-style:solid;border-color:#000000;"><table></table></div>
<style>#f6{font:9pt "Arial";color:#00007f}</style>
<span style="position:absolute;top:83pt;left:36pt" id=f6> Âèä êàðòîíà   </span>
<div style="position:absolute;top:83.7pt;left:143.1pt;width:252.8;height:20.7;padding-top:13.0;font:0pt Arial;border-width:1.4; border-style:solid;border-color:#000000;"><table></table></div>
<style>#f7{font:bold 9pt "Arial";color:# 000000 }</style>
<span style="position:absolute;top:83pt;left: 22 

И Вы знаете, это конечно смешно (если бы не так горько), но код нон-апексоида выводит отчет дважды, прчем, похоже, что первый в хедере страницы авторизации :)
...
Рейтинг: 0 / 0
Регионы
    #36452422
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите

автор<html>
<body dir=LTR bgcolor="#ffffff">
<!-- Created by Oracle Reports -->
<div style="position: absolute; top:0pt;left:1pt;">
</div>
<style>#f1{font:bold 10pt "Arial";color:#000000}</style>
<span style="position:absolute;top:4pt;left:36pt" id=f1>ÏðîÊîíò</span>
<style>#f2{font:8pt "Arial";color:#000000}</style>
<span style="position:absolute;top:4pt;left:570pt" id=f2>19-01-10 08:33</span>
<style>#f3{font:italic 9pt "Arial";color:#000000}</style>
<span style="position:absolute;top:12pt;left:345pt" id=f3>ÎÀÎ "ÑÏá ÊÏÊ"</span>
<style>#f1a2a661{color:#000000;}</style>
<style>#f2a2a661{color:#000000;}</style>
<style>#f3a2a661{color:#000000;}</style>
<div style="position:absolute;top:2pt;left:661pt" id=f2>Ñòð. <span id=f1a2a661>1</span><span id=f2a2a661> èç </span><span id=f3a2a661>1</span></div>
<style>#f4{font:11pt "Arial";color:#000000}</style>
<span style="position:absolute;top:26pt;left:364pt" id=f4>ÊÄÌ1</span>
<style>#f5{font:bold 11pt "Arial";color:#000000}</style>
<span style="position:absolute;top:44pt;left:279pt" id=f5>ÂÛÐÀÁÎÒÊÀ ÊÀÐÒÎÍÀ ÏÎ ÌÀÐÊÀÌ </span>
<span style="position:absolute;top:62pt;left:237pt" id=f5>çà ïåðèîä ñ</span>
<span style="position:absolute;top:62pt;left:309pt" id=f5>********************</span>
<span style="position:absolute;top:62pt;left:403pt" id=f5>ïî</span>
<span style="position:absolute;top:62pt;left:421pt" id=f5>11-01-10 23:59:59</span>
<div style="position:absolute;top:83.7pt;left:36.0pt;width:902.6;height:54.4;padding-top:46.8;font:0pt Arial;border-width:1.4; border-style:solid;border-color:#000000;"><table></table></div>
<style>#f6{font:9pt "Arial";color:#00007f}</style>
<span style="position:absolute;top:83pt;left:36pt" id=f6> Âèä êàðòîíà </span>
<div style="position:absolute;top:83.7pt;left:143.1pt;width:252.8;height:20.7;padding-top:13.0;font:0pt Arial;border-width:1.4; border-style:solid;border-color:#000000;"><table></table></div>
<style>#f7{font:bold 9pt "Arial";color:#000000}</style>
<span style="position:absolute;top:83pt;left:22

А двойное появление было моей виной
...
Рейтинг: 0 / 0
Регионы
    #36452505
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KaterinПростите

Код: plaintext
1.
2.
<html>
<body dir=LTR bgcolor="#ffffff">
...



И как теги, не настораживают Вас? Или Вы HTML тоже изучали по мере надобности? :)
...
Рейтинг: 0 / 0
Регионы
    #36452520
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerKaterinПростите

Код: plaintext
1.
2.
<html>
<body dir=LTR bgcolor="#ffffff">
...



И как теги, не настораживают Вас? Или Вы HTML тоже изучали по мере надобности? :)

Так это все из-за них? Просто их формирует генератор, а я внимание не обратила.
...
Рейтинг: 0 / 0
Регионы
    #36454648
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашла выход сделать через фрейм и переменную. Однако теперь фрейм отображается. а сама страница почему-то нет. Не посмотрите?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare 
  c clob;
  tmp varchar2( 32000 );
  pos number:=  1 ;
  len number;
begin
  select cdata into c from TC_REP where REP_ID= 121 ;
  len := dbms_lob.getlength(c); 
  -- выдачfa содержимого clob через htp.p
htp.p('<script language="JavaScript">
var varFrame = "');
loop 
    exit when pos > len;
    tmp := dbms_lob.substr(c,  32000 , pos);
    htp.p(tmp);
    pos:= pos +  32000 ;
  end loop;
htp.p('"</script><iframe src="javascript:parent.varFrame"></iframe>
');
exception when no_data_found then
  htp.p('данных не найдено');
end;
...
Рейтинг: 0 / 0
Регионы
    #36455482
Katerin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь вывести все это в новом окне. Вот так выводится окно - все нормально

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
declare 
cdat clob;
tmp varchar2( 32000 );

begin
select cdata into cdat from tc_rep where rep_id =  121 ;
tmp:='wnd.document.write("'||c||'");';



htp.p('
<script>
{

var opts = "top=200, left=300, width=400, height=400";
var wnd = window.open("about:blank","",opts);

var l_h1 = wnd.document.createElement("h1");
var l_body = wnd.document.createElement("body");
var txt_nd = wnd.document.createTextNode("!!!");

l_h1.appendChild(txt_nd);
l_body.appendChild(l_h1);
wnd.document.appendChild(l_body);');

--htp.p(tmp);

htp.p('}</script>');

end;

Но как только пытаюсь передать данные (снимаю коммент со строки htp.p(tmp);) - все - ни окна. ни вообще какоой либо активности. Никто не объяснит в чем может быть дело?
...
Рейтинг: 0 / 0
Регионы
    #36461970
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katerin,

0. Вообще, для проверки, что там получилось на странице, можно использовать FireBug в Лисичке, WebDeveloper в IE. Для Оперы, Хрома и Сафари тоже, думаю, найдутся свои утилиты.
1. У меня в примере создан PL/SQL Dynamic Content-регион со следующим Source:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare 
  c clob;
  tmp varchar2( 32000 );
  pos number:=  1 ;
  len number;
begin
  select data into c from test_clob_content where ID=:P17_X;
  len := dbms_lob.getlength(c); 
  -- выдачa содержимого clob через htp.p
  loop 
    exit when pos > len;
    tmp := dbms_lob.substr(c,  32000 , pos);
    htp.p(tmp);
    pos:= pos +  32000 ;
  end loop;
exception when no_data_found then
  htp.p('данных не найдено');
end;
Попробуйте приспособить этот код под Ваши таблицы и переменные, записать в таблицу обычный текст (например, '1, 2, 3...') и вывести его в регионе. И когда всё получится, посмотрите, что именно за теги хранятся у Вас в других clob-ах, раз они ломают Вам разметку.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Регионы
    #39701445
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня всем!

Имеем Application Express 4.2.1.00.08.

Имеем классический репорт со следующим сорсом:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
select
  zmch.id zmch_id,
  zmch.reg_num,
  zmch.reg_date zmch_reg_date,
  zmch.source_org_name,
  zmch.product_name,
  zmch.ANS_DATE,
  ismzamech_conv(zmch.id, 'cctg') ctg,
  ismzamech_conv(zmch.id, 'stxt') stext_stext
from
  ISMZAMECH_ZAMECH zmch
where
  to_char(zmch.reg_date,'YYYY') like :P1_YEAR
  AND
  (
    :P1_STEXT is null
    OR
    (
      :P1_STEXT is not null
      AND EXISTS
      (
        SELECT
          1
        FROM
          ISMZAMECH_ZMS zms
        WHERE
          zms.zm_id=zmch.id
          AND zms.st_id=:P1_STEXT
      )
    )
  )
  and
  (
    (
      :P1_STATUS is null or :P1_STATUS=0
    )
    or
    (
      :P1_STATUS=1
      and exists (select 1 from ismzamech_zmcc c where c.zm_id=zmch.id and (c.cc_id=13 OR c.cc_id=25))
    )
    or
    (
      :P1_STATUS=2
      and NOT exists (select 1 from ismzamech_zmcc c where c.zm_id=zmch.id and (c.cc_id=13 OR c.cc_id=25))
      and zmch.ANS_DATE is null
    )
    or
    (
      :P1_STATUS=3
      and NOT exists (select 1 from ismzamech_zmcc c where c.zm_id=zmch.id and (c.cc_id=13 OR c.cc_id=25))
      and zmch.ANS_DATE is not null
    )
  )
  and
  (
    :p1_dept is null
    or
    (
      :p1_dept is not null
      and zmch.RESP_DEPT=
      (
        select
          dept.id
        from
          hr_dept0 dept
        where
          dept.name like :p1_dept
      )
    )
  )
  and
  (
    :P1_PRODUCT_NAME is null
    or
    (
      :P1_PRODUCT_NAME is not null
      and zmch.PRODUCT_NAME like :P1_PRODUCT_NAME
    )
  )


Использованная в сорсе функция имеет следующий код:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
CREATE OR REPLACE FUNCTION ismzamech_conv(zmch_id number, fnt varchar2)
RETURN
  clob
AS
  outrec clob:='';
  numrows number:=0;
BEGIN
----------------------
  IF fnt='stxt'
  THEN
    FOR i IN
      (
        SELECT
          st.stext
        FROM
          ismzamech_zms zms,
          ismzamech_stexts st
        WHERE
          zms.zm_id=zmch_id
          AND zms.st_id=st.id
      )
    LOOP
      IF length(outrec)>0 THEN outrec := outrec || ';<BR> ' || i.stext;
      ELSE outrec := i.stext;
      END IF;
    END LOOP;
----------------------
  ELSIF fnt='cctg'
  THEN
    FOR i IN
      (
        SELECT
          c.text
        FROM
          ismzamech_zmcc zmcc,
          ismzamech_causes c
        WHERE
          zmcc.zm_id=zmch_id
          AND zmcc.cc_id=c.id
      )
    LOOP
      IF length(outrec)>0 THEN outrec := outrec || ';<BR> ' || i.text;
      ELSE outrec := i.text;
      END IF;
    END LOOP;
----------------------
  ELSIF fnt='rd'
  THEN
    FOR i IN
      (
        SELECT
          case when dpt.dept_lev<=1 then dpt.name else st_n.deptname(dpt.id,6)||' / '||dpt.name end text
        FROM
          ismzamech_zmrd zmrd,
          hr_dept0 dpt
        WHERE
          zmrd.zm_id=zmch_id
          AND zmrd.rd_id=dpt.id
      )
    LOOP
      IF length(outrec)>0 THEN outrec := outrec || ';<BR> ' || i.text;
      ELSE outrec := i.text;
      END IF;
    END LOOP;
----------------------
  ELSIF fnt='corrlist'
  THEN
    BEGIN
      FOR i IN
        (
          select
            CORR_TODO,
            (
              select
                pr_n.fname(cardid => card.id)
                || ' ('
                || emp.tab_n
                || ' | '
                || st_n.deptname(trans.DEPT_ID,10)
                || ' | '
                || st_n.appname(trans.APPOINT_ID,0)
                || ')'
              from
                pr_card0 card,
                pr_emp0 emp,
                pr_trans0 trans
              where
                emp.card_id=card.id
                and trans.emp_id=emp.id
                and trans.tp_abbr in ('CUR','RES')
                and trans.subst_emp_id is null
                and trans.subst_staff_id is null
                and trans.d_to=to_date('31.12.2099','dd.mm.yyyy')
                and emp.id=CORR_INCHARGE
            ) incharge,
            CORR_TERMS,
            CORR_DONE,
            CORR_RES_STAT,
            CORR_EFF_EVAL_PERIOD
          from
            ISMZAMECH_CORRECTIONS
          where
            zamech_id=zmch_id
          
         /* SELECT
            zmcr.corr_todo text
          FROM
            ismzamech_corrections zmcr
          WHERE
            zmcr.zamech_id=zmch_id*/
        )
      LOOP
        numrows:=numrows+1;
        outrec := outrec || '<tr class="highlight-row"><td headers="CORR_TODO" class="t20data">'||i.corr_todo||'</td><td headers="INCHARGE" class="t20data">'||nvl(i.incharge,'-')||'</td><td headers="CORR_TERMS" class="t20data">'||nvl(i.corr_terms,'-')||'</td><td headers="CORR_DONE" class="t20data">'||nvl(i.corr_done,'-')||'</td><td headers="CORR_EFF_EVAL_PERIOD" class="t20data">'||nvl(i.CORR_EFF_EVAL_PERIOD,'-')||'</td><td headers="CORR_RES_STAT" class="t20data">'||nvl(i.corr_res_stat,'-')||'</td></tr>';
      END LOOP;
      IF numrows>0 THEN
        outrec := '<table border="0" cellpadding="0" cellspacing="0" summary="" class="t20StandardAlternatingRowColors t20Report" style="width:100%"><tbody><tr><th class="t20ReportHeader" id="CORR_TODO">Действия</th><th class="t20ReportHeader" id="INCHARGE">Ответственный</th><th class="t20ReportHeader" id="CORR_TERMS">Сроки</th><th class="t20ReportHeader" id="CORR_DONE">Выполнение</th><th class="t20ReportHeader" id="CORR_EFF_EVAL_PERIOD">Срок оценки результативности</th><th class="t20ReportHeader" id="CORR_RES_STAT">Статус результативности</th></tr>'||outrec||'</tbody></table>';
        ELSE
          outrec:='-';
        END IF;
    END;
    
----------------------
  END IF;
  RETURN outrec;
END;


Все замечательно работает, но вот именно у одного только пользователя сегодня репорт не отработал, выдав следующее (см. скрин).
...
Рейтинг: 0 / 0
Регионы
    #39701454
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще забыл сказать, что темплейт репорта изменил следующим образом (см. скриншот).
...
Рейтинг: 0 / 0
Регионы
    #39701521
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DanJa,

Ошибка возникла из за того, что у данного пользователя данные оказались большими.
Какой то полуподход у решению задачи. половина таблицы стандартным способом, половину отрисовали.
Ну сгенерите таблицу целиком при помощи региона dynamic pl/sql с нужными Вам условиями.
...
Рейтинг: 0 / 0
Регионы
    #39702405
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelDanJa,

Ошибка возникла из за того, что у данного пользователя данные оказались большими.
Какой то полуподход у решению задачи. половина таблицы стандартным способом, половину отрисовали.
Ну сгенерите таблицу целиком при помощи региона dynamic pl/sql с нужными Вам условиями.

Самое интересное в том, что данные у всех пользователей одни и те же. Спасибо за подсказку с регионом dynamic pl/sql! Попробую. Но интересно все же разобраться, почему именно у этого пользователя вдруг ни с того ни с сего перестали отображаться те же самые данные, которые отображаются у других пользователей.
...
Рейтинг: 0 / 0
Регионы
    #39702408
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelDanJa,

Ошибка возникла из за того, что у данного пользователя данные оказались большими.
Какой то полуподход у решению задачи. половина таблицы стандартным способом, половину отрисовали.
Ну сгенерите таблицу целиком при помощи региона dynamic pl/sql с нужными Вам условиями.

Сейчас перепроверил - в отчете есть ограничения по году (в сорсе региона видно). Выбрал данные за год, где данных вообще нет - результат тот же. Т.е. проблема точно не в объеме данных. Здесь что-то странное и непонятное.
...
Рейтинг: 0 / 0
Регионы
    #39702423
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DanJa,
Включите дебаг, давайте посмотрим где конкретно спотыкается. Может ошибка возникает в condition этого региона, может ФИО у врача длинная.
в 4.2 дебаг не очень говоряший, но все же.
...
Рейтинг: 0 / 0
Регионы
    #39702675
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,

Вот такой дебаг.
...
Рейтинг: 0 / 0
Регионы
    #39702690
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переименовал пользователя (просто добавил 2 в конце) - все заработало. Я в недоумении... Может какой-то кэш есть в АПЕКСе, который нужно почистить?
...
Рейтинг: 0 / 0
Регионы
    #39702722
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DanJaПереименовал пользователя (просто добавил 2 в конце) - все заработало. Я в недоумении... Может какой-то кэш есть в АПЕКСе, который нужно почистить?
Это подтверждает мои слова, значит дело в данных и их неккоректной обрабоке. Теперь осталось найти место где и испарвить.
...
Рейтинг: 0 / 0
Регионы
    #39702724
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но мне кажется, что вот где то тут
Код: plsql
1.
2.
  ismzamech_conv(zmch.id, 'cctg') ctg,
  ismzamech_conv(zmch.id, 'stxt') stext_stext


результат больше 2000 символов, помоему такое ограничение.
...
Рейтинг: 0 / 0
Регионы
    #39703948
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,

Я бы согласился, если у различных пользователей были бы различные данные, но нет - все данные отображаются в полном объеме для любого пользователя. Единственное ограничение - одни пользователи могут вносить и корректировать данные, а другие - нет.
На сегодняшний день еще у одного пользователя проявился этот же баг.
...
Рейтинг: 0 / 0
Регионы
    #39703956
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправочка - уже не у одного. У нескольких активных пользователей такая "беда". Те, кто чаще всего заходят в данное приложение и просматривают данные. При этом если пользователя переименовать, то все моментально "лечится". У меня стойкое ощущение того, что где-то есть какой-то кэш, который переполняется и не отчищается самостоятельно.
...
Рейтинг: 0 / 0
Регионы
    #39703973
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наконец-то выявили источник проблемы - ошибка вылетает в момент сортировки по двум этим полям:
Код: plsql
1.
2.
3.
 
  ismzamech_conv(zmch.id, 'cctg') ctg,
  ismzamech_conv(zmch.id, 'stxt') stext_stext


Куда лезть? Что смотреть, что бы исправить?
...
Рейтинг: 0 / 0
Регионы
    #39704167
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сортируете по клобу? :)
Ну сделайте сортировку по другому полю.
...
Рейтинг: 0 / 0
Регионы
    #39707398
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelСортируете по клобу? :)
Ну сделайте сортировку по другому полю.
"А че, так можно было?" )))
Ну да, как-то не подумал, что с сортировкой по клобу бедово будет.
А ведь пользователи просят... ((
...
Рейтинг: 0 / 0
Регионы
    #39707403
DanJa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все! Нашел решение с помощью dbms_lob.substr. Теперь все замечательно сортируется! Всем спасибо!
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Регионы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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