Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как сгенерировать таблицу / 15 сообщений из 15, страница 1 из 1
01.03.2013, 15:29
    #38171115
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
У меня есть несколько таблиц с разным количеством полей, мне нужно написать функцию которая выводила бы эти таблицы как есть (то-есть формировался бы заголовок на основании имен полей).

Вот так выглядит часть функции сейчас

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
htp.p('<table style="width: 100%" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<th class="header">Артикул</th>
<th class="header">Товар</th>
<th class="header">Цена</th>
</tr>');
for rec in (SELECT * FROM tablename )
loop
htp.p('<tr><td>'||rec.id||'</td><td>'||rec.product||'</td><td>'||rec.price||'</td></tr>');
end loop;
htp.p('</tbody></table>');
...
Рейтинг: 0 / 0
04.03.2013, 10:16
    #38172961
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
Мне нужно примерно следующее: Сформировать запрос Select из разных переменных, выполнить его и результат обработать курсором.
В какой тип переменной можно засунуть
Код: plsql
1.
 SELECT * FROM ТАБЛИЦА_С_РАЗНЫМ_КОЛ_ВОМ_ПОЛЕЙ



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
....
declare
TABLENAME varchar2(50);
STR varchar2(200);
begin
TABLENAME:='Product';
STR:='SELECT * FROM'|| TABLENAME ;

for rec in (STR)
.....
...
Рейтинг: 0 / 0
04.03.2013, 14:48
    #38173376
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
loggin,

В Source региона с отчётом может быть как SQL-запрос, так и тело функции, возвращающей строку с текстом запроса. Если мы говорим про отчёт, конечно. Иначе можно воспользоваться http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35127/apex_plugin_util.htm#BABFBIJD]APEX_PLUGIN_UTIL.get_data[2] , чтобы выполнить запрос и в цикле его вывести.
...
Рейтинг: 0 / 0
04.03.2013, 17:51
    #38173654
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
suPPLer,

этот вариант у меня что-то не получается.... А еще средства существуют? )

Скажите пожалуйста, вот такой код возможно как-нибудь изменить чтобы он заработал ? )

TABLENAME:='Product';
STR:='SELECT * FROM'|| TABLENAME ;

for rec in (STR)
loop
htp.p(rec.id);
end loop;
...
Рейтинг: 0 / 0
04.03.2013, 18:02
    #38173670
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
logginsuPPLer,

этот вариант у меня что-то не получается.... А еще средства существуют? )

Скажите пожалуйста, вот такой код возможно как-нибудь изменить чтобы он заработал ? )

Код: plsql
1.
2.
3.
4.
5.
6.
7.
TABLENAME:='Product';
STR:='SELECT * FROM'|| TABLENAME ;

for rec in (STR) 
loop
htp.p(rec.id);
end loop;



Возможно. RTFM OPEN-FOR Statement .

Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare
  l sys_refcursor;
begin
  open l for 'select * from dual';
  close l;
end;
/



Но я пока не вижу надобности в этом. Чем Вас не устраивают обычные отчёты, в Source которых указывается тело функции, возвращающей текст запроса?
...
Рейтинг: 0 / 0
05.03.2013, 09:27
    #38174150
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
Дело в том, что я отправляю ajax запрос, а ApplicationProcess генерирует и возвращает HTML код таблицы в зависимости от того какие параметры я передаю. А на странице есть регион в который с помощью JavaScript запихиваю ответ с сервера.
...
Рейтинг: 0 / 0
05.03.2013, 11:43
    #38174328
Migelle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
Это можно решить с помощью DBMS_SQL Но если таблиц немного то IMHO проще написать несколько if-ов с со своим циклом для каждой таблицы.
...
Рейтинг: 0 / 0
05.03.2013, 11:54
    #38174355
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
Migelle,

я так и сделал изначально, но после того как пришлось добавить еще несколько таблиц то вес кода получился больше 30кб, а APEX не позволяет сохранить код в ApplicationProcess >30кб и в итоге он отказался принимать мой код).
...
Рейтинг: 0 / 0
05.03.2013, 11:57
    #38174363
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
Или так:

execute immediate > 'begin ... for loop ... htp.p ... end;';
...
Рейтинг: 0 / 0
05.03.2013, 11:59
    #38174368
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
loggin,

Для этого есть хранимые процедуры / пакеты
...
Рейтинг: 0 / 0
05.03.2013, 12:35
    #38174442
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
loggin,

0. Как уже предлагалось выше, RTFM APEX_PLUGIN_UTIL.get_data[2]. Это удобные обёртки вокруг DBMS_SQL, которые возвращают результат запроса и определения столбцов в коллекциях. Циклы по коллекциям тривиальны и влезут в 32K.
1. Откажитесь от идеи "один регион показывает все таблицы". Она пагубна. Делайте нормальные отчёты на одной странице в разных регионах или на разных страницах. Отображать HTML вручную — это не APEX way в большинстве случаев.
...
Рейтинг: 0 / 0
05.03.2013, 13:03
    #38174510
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
suPPLerloggin,

0. Как уже предлагалось выше, RTFM APEX_PLUGIN_UTIL.get_data[2]. Это удобные обёртки вокруг DBMS_SQL, которые возвращают результат запроса и определения столбцов в коллекциях. Циклы по коллекциям тривиальны и влезут в 32K.
1. Откажитесь от идеи "один регион показывает все таблицы". Она пагубна. Делайте нормальные отчёты на одной странице в разных регионах или на разных страницах. Отображать HTML вручную — это не APEX way в большинстве случаев.

Пункт №1 меня крайне огорчил) Спасибо за ценные советы!
...
Рейтинг: 0 / 0
05.03.2013, 16:05
    #38174820
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
Подскажите плиз еще вот что.....
Создал отдельную страницу на нее добавил несколько репортов с условием отображения по TABLENAME. Все замечательно, но споткнулся на том, что в настройках ссылки можно задать всего 3 параметра, а мне нужно передать на другую страницу примерно 6-8 параметров.

Как грамотно это сделать?
...
Рейтинг: 0 / 0
05.03.2013, 16:10
    #38174830
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
logginКак грамотно это сделать?
0. Вставить несколько названий полей через запятую в одно поле. Напротив, соответственно, значения для полей через запятую.
1. Выбрать URL в качестве Target, почитать про формат ссылок в APEX и склеить соответствующий URL.

PS: Параметров что-то чересчур.
...
Рейтинг: 0 / 0
05.03.2013, 16:39
    #38174882
loggin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сгенерировать таблицу
suPPLerlogginКак грамотно это сделать?
0. Вставить несколько названий полей через запятую в одно поле. Напротив, соответственно, значения для полей через запятую.
1. Выбрать URL в качестве Target, почитать про формат ссылок в APEX и склеить соответствующий URL.

PS: Параметров что-то чересчур.
Может для Apex это действительно так (параметров чересчур), но вообще GET запрос позволяет передать и побольше параметров.

Спасибо вам за помощь! Все получилось!
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как сгенерировать таблицу / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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