Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle APEX Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Регионы  [new]
Katerin
Guest
Всем привет!!!

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

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

DECLARE
temp VARCHAR2(2500);
BEGIN

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

Регион называется report. Помогите, пожалуйста.
5 фев 10, 08:27    [8298990]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
В итоге пришла к такому коду:

DECLARE
temp VARCHAR2(25000);
BEGIN
SELECT CDATA INTO temp FROM htm_d where id=82;
htp.p(temp);
END;

Однако он все также не заполняет регион....
5 фев 10, 09:24    [8299169]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
dvksqlru
Member

Откуда:
Сообщений: 338
Katerin,

100% связано с порядком отображения элементов при загрузке. Рекомендую поэкспериментировать с "Process Point", и, не забыть доложить о результатах...
5 фев 10, 09:57    [8299360]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
dvksqlru
Katerin,

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


:)

Данные-то я извлекла. Через htp.p смотрятся. а как "загнать" их в регион?
5 фев 10, 10:24    [8299571]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7797
Блог
Katerin
У меня такой вопросик. Есть регион и есть таблица. в которой есть поле типа БЛОБ.

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

DECLARE
temp VARCHAR2(25000);


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

PS: Гляньте в сторону региона с типом PL/SQL Dynamic Content.
5 фев 10, 10:54    [8299839]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
Я и пытаюсь указать источник для региона с динамическим контентом.
А в итоге, незнаю как уже полученные данные назначить в качестве его источника

DECLARE
temp clob;
BEGIN
SELECT CDATA into temp FROM HTM_D where id=121;
--Данные получены в темп, но они не отображаются в регионе
END;

Регион - PL|SQL anonim
5 фев 10, 11:05    [8299919]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
non-apexoid
Guest
Katerin, и не отобразятся, пока вы не преобразуете clob в строку и не сделаете htp.p(строка). Так как размер строки ограничен, то правильно будет в цикле считывать подстроки из clob в буферную строку и и вот эту строку выводить.
5 фев 10, 11:12    [8299961]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7797
Блог
Katerin,

Ещё раз: у Вас какого типа поле таблицы: BLOB, CLOB, VARCHAR2? Что в этом поле лежит: HTML, картинка, просто текст?
5 фев 10, 11:29    [8300086]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
suPPLer
Katerin,

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


хтмл код с clob

он успешно передается в temp, выводится на страницу через htp.p, но никак не хочет отображаться в рамках региона
5 фев 10, 11:36    [8300168]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7797
Блог
Katerin
выводится на страницу через htp.p, но никак не хочет отображаться в рамках региона


Что-то не вяжется. Если на страницу выводится, то какие проблемы? Сделайте пример на apex.oracle.com.
5 фев 10, 11:53    [8300360]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
suPPLer
Katerin
выводится на страницу через htp.p, но никак не хочет отображаться в рамках региона


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


:()
Так мне необходимо вывести в регион, а не на саму страницу
5 фев 10, 11:57    [8300397]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7797
Блог
Katerin,

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

Вот примитивный пример.
5 фев 10, 12:34    [8300777]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
suPPLer,

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

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;

В таком виде не выводится Точнее выводится все, кроме самого силоба
5 фев 10, 13:27    [8301375]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7797
Блог
Katerin,

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

BEGIN

  FOR c1 in (SELECT CDATA FROM HTM_D)
  LOOP

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

  END LOOP;

END;

Или

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;
5 фев 10, 13:34    [8301445]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
suPPLer
Katerin,

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


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

В итоге

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

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

...FROM HTM_D where id=121

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

В общем, проблематично одну отдельную запись вывести в регион, а казалось бы такая необходимая процедура...
5 фев 10, 13:51    [8301593]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7797
Блог
Katerin,

давайте по шагам. Вам нужно вывести CLOB из одной записи или из всей таблицы?
5 фев 10, 13:57    [8301648]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
suPPLer
Katerin,

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


Из одной конкретной записи по id, соответственно хтмл-код - это содержимое поля этой записи типа clob
5 фев 10, 14:00    [8301672]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
Вот нашла какой-то код,изменила его

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
5 фев 10, 14:18    [8301860]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
non-apexoid
Guest
Katerin, что-то вы здесь все напутали, делаете select в дескриптор файла. Ведь правильный был подход.
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;

Как-то так. Правда, этот код не проверял.
5 фев 10, 15:24    [8302686]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
%(

По прежнему выводит мимо региона, просто на страницу... правда теперь еще и кодировка cyr слетела...
5 фев 10, 15:31    [8302782]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
non-apexoid
Guest
Katerin, нужен пример html из вашего clob. Дело, скорее всего, именно в нём.
5 фев 10, 15:39    [8302862]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
non-apexoid
Katerin, нужен пример html из вашего clob. Дело, скорее всего, именно в нём.


CDATA
<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

И Вы знаете, это конечно смешно (если бы не так горько), но код нон-апексоида выводит отчет дважды, прчем, похоже, что первый в хедере страницы авторизации :)
5 фев 10, 15:51    [8302958]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
Простите

автор
<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


А двойное появление было моей виной
5 фев 10, 16:14    [8303150]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7797
Блог
Katerin
Простите

<html>
<body dir=LTR bgcolor="#ffffff">
...



И как теги, не настораживают Вас? Или Вы HTML тоже изучали по мере надобности? :)
5 фев 10, 16:42    [8303399]     Ответить | Цитировать Сообщить модератору
 Re: Регионы  [new]
Katerin
Guest
suPPLer
Katerin
Простите

<html>
<body dir=LTR bgcolor="#ffffff">
...



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


Так это все из-за них? Просто их формирует генератор, а я внимание не обратила.
5 фев 10, 16:48    [8303441]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle APEX Ответить