powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как использовать пакет в качестве источника для региона?
25 сообщений из 25, страница 1 из 1
Как использовать пакет в качестве источника для региона?
    #39131895
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используем вот такую функцию для получения некоторых данных
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 ttt.ttt_sql_pack_up.list_doc_job_up(cboautor_task => 0,
                                 check1 => 1,
                                 set_filtr => 0,
                                 cntdate_start => NULL,
                                 cntdate_end => NULL,
                                 txtca_name => '',
                                 nсa_name => 0,
                                 cboautoruse => 0,
                                 cbostaff => 0,
                                 opguse => 3,
                                 txtreg_num_only => '',
                                 txtreg_num_suf => '',
                                 txtindex => '',
                                 txtname_doc => '',
                                 ndoc_id => 0,
                                 cntdate_startuse => NULL,
                                 cntdate_enduse => NULL,
                                 nuseraznica => NULL,
                                 cur => v_cur);



Как получаемый курсор v_cur использовать для источника данных региона??
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131924
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lip,
внутренность секрет?
все входные кроме курсора?
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131934
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не секрет. Просто в курсор не хочется переделывать - тогда сложнее поддерживать будет.
Вот первая часть
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 NREG_NUM_ONLY DOCUMENTS.REG_NUM_ONLY%TYPE;
    NREG_NUM_SUF  DOCUMENTS.REG_NUM_SUF%TYPE;
    ССA_NAME    DOCUMENTS.CA_NAME%TYPE := TXTCA_NAME;
  
    ORADATE_STARTUSE DATE;
    ORADATE_ENDUSE   DATE;
  BEGIN
  
    IF SET_FILTR = 0 THEN
      -- если не наложен фильтр
    
      OPEN CUR FOR - и длинный запрос...
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131937
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lip,
раз секрет, то в общем случае нельзя с курсорами.
- либо обёртка пипелинед функцией, что IMHO изврат
- либо выдать сам запрос ещё одним out параметром
- либо нормальная вьюшка\запрос
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131939
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lip,
если курсор нередактируемый, то на кой он нужен?
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lip,
опять же в веб идеология такая:
- короткий запрос из пула и закрыл за 0,1 сек.
Нафиг тут эти курсоры ещё контролировать и закрывать.
У тебя наверно десктоп-клиент-сервер был.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131944
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, А что значит

автор- либо выдать сам запрос ещё одним out параметром


например?
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131946
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так он десктоп и есть. Просто решили web морду написать для некоторых пользователей.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131957
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lipнапример?
там в апекс декларативно:
- новый регион - Отчёт - источник данных - SQL or Function
Вот ткни там подсказку про функцию. Я сам не юзал.
Вроде
return 'select' || ffffffffffff
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131961
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lipрешили web морду написать для некоторых пользователей.
без вьющек всё рано не обойтись. Тут фильтрует хорошо апекс.
Поэтому сделать из курсора вьюшку вытянув sql не так сложно.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39131972
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Вроде
return 'select' || ffffffffffff
хотя тоже изврат. Отлаживать то неудобно.
Т.е. новые вьюшки, даже материализованные - единственный вариант.
В десктопе у тя по другому. Там дал параметры входные и выдал курсором список.
Тут веб. Канал в одну сторону....текстовый..
IMHO
Удачи!
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39132067
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока копаю в сторону ApEx consuming a REF CURSOR for processing, and consuming the same REF CURSOR for a report.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39132084
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lip,
упрямый))
- делай:
Код: sql
1.
2.
3.
ЦИКЛ по курсору
   http.('<' || cur.Name || )
КОНЕЦ ЦИКЛА, ЗАКРЫТЬ КУРСОР
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39132905
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для выборки из одной таблицы пример ниже. Для выборки из соединения таблиц - нужно немного изменить пример - позже напишу (когда проверю)

-- определяем тип курсора
Код: plsql
1.
2.
3.
4.
CREATE OR REPLACE PACKAGE DELOOB.all_maket_ref_cursor_pkg AS
   TYPE all_maket_ref_cursor IS REF CURSOR
      RETURN all_maket%ROWTYPE;
END all_maket_ref_cursor_pkg;


-- процедура, которая возвращает REF CURSOR по входному параметру
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE OR REPLACE PROCEDURE DELOOB.test_ref_cursor(
   p_kancelarid IN     NUMBER,
   p_cursor    OUT all_maket_ref_cursor_pkg.all_maket_ref_cursor
) IS
BEGIN
   OPEN p_cursor FOR
      SELECT *
        FROM all_maket
       WHERE kancelarid = p_kancelarid;
END test_ref_cursor;
/


-- определяем таблицу для PIPELINE
Код: plsql
1.
2.
3.
4.
5.
CREATE OR REPLACE package DELOOB.all_maket_pkg
is
  type all_maket_tbl is table of all_maket%rowtype;
end;
/


-- pipelined функция для заполнения результирующей таблицы
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE OR REPLACE FUNCTION DELOOB.showit(p_kancelarid IN NUMBER)
   RETURN all_maket_pkg.all_maket_tbl
   PIPELINED IS
   c_cursor   all_maket_ref_cursor_pkg.all_maket_ref_cursor;
   r_all_maket      c_cursor%ROWTYPE;
BEGIN
   test_ref_cursor(p_kancelarid, c_cursor);

   LOOP
      FETCH c_cursor
      INTO r_all_maket;

      EXIT WHEN c_cursor%NOTFOUND;
      PIPE ROW (r_all_maket);
   END LOOP;

   CLOSE c_cursor;

   RETURN;
END;
/



Источник для Apex Report Region
Код: sql
1.
2.
SELECT *
  FROM table(deloob.showit(0))
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39132941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lip-- определяем таблицу для PIPELINE
да.
Простая обёртка, которая перекачивает данные из курсора в другой массив для APEX.
Минус - могут быть тормоза.
Плюс - не надо менять уже выстроенное API для десктопа.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39132946
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совершенно верно - хочется, чтобы логика осталась на сервере.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39132956
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lipСовершенно верно - хочется, чтобы логика осталась на сервере.
она хоть как остаётся.
Просто по опыту, время и код написания обёрток равен написанию вьюх без этих PIPELINED чисто для APEX.
Т.к. API для десктопа <> API для веба. Их не объединить.
Удачи!
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39133188
alex_lip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем на данный момент вьюха с параметрами (через тот же контекст) сильно проще получается.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39133208
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_lipВ общем на данный момент вьюха с параметрами (через тот же контекст) сильно проще получается.
- через контекст это Г.
В APEX контекст это айтемс сохранённый в сессии (на сервере)
select view where :param1 :param2 :param3 :param4
часть параметров отпускаешь вверх на сервер для фильтров.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39133215
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или вьюха во вьюхе как вариант.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39144800
Selesta_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
я почему то не могу найти в 5 апексе
новый регион - Отчёт - источник данных - SQL or Function
В качестве источника только таблица и SQL.
А хочется воспользоваться некоторыми возможностями интерактивного отчета.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39144839
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Selesta_А хочется воспользоваться некоторыми возможностями интерактивного отчета.
какими?
Там вроде было только выдать наверх текст запроса.
IMHO правильно сделали.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39144863
Selesta_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Хочу search bar использовать ...
А сам запрос такого рода, что в зависимости от входных параметров поиск идет по разным секционированным таблицам, такой запутанный, что индексы пропадают.
Просто подумалось, я не нашла эту SQL or Function.
Если в 5 этого нету - попробую pipelined в запросе.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39144930
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Selesta_по разным секционированным таблицам, такой запутанный, что индексы пропадают.
так не бывает.
Первый же чел в оракле вам скажет - давай план.
...
Рейтинг: 0 / 0
Как использовать пакет в качестве источника для региона?
    #39145029
Selesta_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Эта таблица - журнал с текстовой информацией + автоинкрементом/идентификатором, которая распихивается потом разными способами в разные таблицы еще и по разным db-линкам, а связь по идентификатору.
И соответственно, в зависимости от сочетания выбираемых параметров и дат, там получаются очень разные алгоритмы поиска через разные таблицы и select лучше составить динамически, вам лучше не вникать). Я в курсе, как смотреть планы).

Я сделала просто:
1) отчет создала по вьюхе v1
2) на кнопку навесила DA, так что б при нажатии на кнопку сначала обновляю вьюху процедурой:
execute immediate 'create or replace view v1 as select * from table(sh.pkg.proc@db_link(<входные параметры>) ';
Внутри процедуры формируется динамический select.
3) а потом уже submit страницы.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как использовать пакет в качестве источника для региона?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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