powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / NO_DATA_FOUND в отчете
9 сообщений из 9, страница 1 из 1
NO_DATA_FOUND в отчете
    #37043029
Всем здрасти!
Не знал как еще описать проблему в теме, поэтому получилось вот так/ Дело в следующем. Есть простой интерактивный отчет, основанный на запросе типа:
Код: plaintext
1.
select q.*  from table(/*<пакет>.<процедура возвращающая, pipeline таблицу>*/)
Так вот. Если выполнять запрос в PL/SQL developer'е, то все замечательно. Но отчет в апексе при тех же условиях выдает NO_DATA_FOUND.
Понимаю, что вопрос не совсем удачный, но поделитесь, кто сталкивался с таким, что может быть не так.
Сам сталкивался только с тем, что такая ошибка может возникать при нехватке прав на объекты внутри пакета, но в данном случае это не вариант, т.к. workspace "натравлен" на саму схему. Так же пробовал вынести тип, возвращаемый функцией, "наружу" из пакета - тоже не сработало.
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37043092
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гришков Максим,

давайте воспроизводимый тест-кейс и версию APEX. А то у Вас уже псевдонима q не хватает в запросе. :) Может, и не возвращает ничего Ваша функция...
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37043403
lZy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lZy
Гость
Была похожая проблема с вьюшками: препеделала нужные вьюхи, что бы они обращались только к таблицам. В результате отчет начал работать.
Когда разбиралась пыталась и функциями возвращать нужные значения, но было так же: в навигаторе отрабатывало, через апекс "no_data_found". Более красивого решения, чем построение сложного запроса, обращающегося только к таблицам, на тот момент не смогла найти.
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37043480
suPPLer,

Алиас Q, естественно должен быть - в конечном запросе на апексе он есть. Вот собственно конечный запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select to_char('<img src="#IMAGE_PREFIX#themes/theme_2/24find.gif" class="tTip">') as bills_link,
       to_char('<img src="#IMAGE_PREFIX#themes/theme_2/24find.gif" class="tTip">') as detail_link,
       to_char('<img src="#IMAGE_PREFIX#themes/theme_2/24find.gif" class="tTip">') as pay_link,
       q.*
  from table(SBC_FIN_REPORTS.rpt_debet_kredit(/*pType*/  0 , 
                                         /*pHoldId*/ :HOLD_ID, 
                                         /*pEndDate*/ to_date(:P4_END_DATE, 'DD.MM.YYYY'), 
                                         /*pClntType*/ :P4_CLNT_TYPE, 
                                         /*pTypeDolg*/ :P4_DEBT_TYPE,
                                         /*pMethod*/ :P4_METHOD_TYPE,
                                         /*pClient*/ decode(:P4_CLNT_ID, - 1 , null, :P4_CLNT_ID),
                                         /*pHoldMember*/ decode(:P4_HOLD_ID, - 1 , null, :P4_HOLD_ID),
                                         /*pDateType*/ :P4_DATE_TYPE,
                                         /*pOrdMark*/ :P4_ORD_MARK)) q
Немного повторюсь, если выполнять тот же самый запрос в pl/sql developer'e - он работет исправно.
С тест кейсом - не получится.
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37043490
lZy,

:) тоже думал об этом... вытащил запрос из функции. Вставил вместо указанного выше селекта... Результат - 404 ошибка. Стал разбираться - запрос более 37 тыс символов - апексу от этого стало не хорошо :). Править такой запрос - не самое приятное дело. Хотелось бы отделаться "меньшей кровью".
P.S. О кривости модели БД и тому, почему запрос получился именно таким - отдельная тема, которую предлагаю не поднимать :)).
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37043555
Получилось починить. В чем было дело, я так и не понял. Как обошел:
Не так давно возился с кросс-таб отчетом. Нашел вот такой способ:
http://www.oracleapplicationexpress.com/tutorials/71-oracle-apex-interactive-report-based-on-plsql-function
Так вот. Свою беду победил аналогично: создал процесс, который на основе запроса формирует апекс-коллекцию. а потом запрос отчета подменил на запрос из коллекции. Как ни странно все заработало :).
Если у кого будут идеи почему до этого не работало - напишите пожалуйста - самому интересно.
Вот собственно код процесса OL_LOAD_BEFORE_HEADER:
Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
begin
  if apex_collection.collection_exists('DEBET_REPORT')
  then
    apex_collection.delete_collection('DEBET_REPORT');
  end if;
  apex_collection.create_collection('DEBET_REPORT');
  for q in (select *
              from table(SBC_FIN_REPORTS.rpt_debet_kredit( 0 ,
                                                          :HOLD_ID,
                                                          to_date(:P4_END_DATE, 'DD.MM.YYYY'),
                                                          :P4_CLNT_TYPE,
                                                          :P4_DEBT_TYPE,
                                                          :P4_METHOD_TYPE,
                                                          decode(:P4_CLNT_ID, - 1 , null, :P4_CLNT_ID),
                                                          decode(:P4_HOLD_ID, - 1 , null, :P4_HOLD_ID),
                                                          :P4_DATE_TYPE,
                                                          :P4_ORD_MARK)))
  loop                                                        
    APEX_COLLECTION.add_member('DEBET_REPORT',
                               q.hold,
                               q.clnt_id,
                               q.client_type,
                               q.client_name,
                               q.cur_id,
                               q.cur_code,
                               q.curator,
                               q.amount,
                               q.oplacheno,
                               q.dolg,
                               q.dolg_base,
                               q.nal,
                               q.bnal,
                               q.virtual,
                               q.itogo,
                               q.base_debet_itogo,
                               q.base_kredit_itogo,
                               q.base_itogo,
                               q.curator1,
                               q.curator2);
  end loop;   
end;

Ну а вот запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select
       to_char('<img src="#IMAGE_PREFIX#themes/theme_2/24find.gif" class="tTip">') as bills_link,
       to_char('<img src="#IMAGE_PREFIX#themes/theme_2/24find.gif" class="tTip">') as detail_link,
       to_char('<img src="#IMAGE_PREFIX#themes/theme_2/24find.gif" class="tTip">') as pay_link,
       q.*
  from apex_collections q
 where q.collection_name = 'DEBET_REPORT'
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37043718
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гришков МаксимПолучилось починить. В чем было дело, я так и не понял.

Попробуйте ещё создать SQL-тип и приводить к нему в запросе результат функции явно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create or replace type tp as object (n number)
/

create or replace type tab_tp as table of tp
/

create or replace function f return tab_tp
pipelined
as
begin
  pipe row (tp( 1 ));
  pipe row (tp( 2 ));
  
  return;
end;
/

select * from table(cast(f as tab_tp))
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37045072
xorvat1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гришков Максим
Не стану утверждать на 100% , но то что написал suPPLer должно помочь
(select * from table(cast(f as tab_tp))). С этим встречался уже не раз, если ты используешь PL/SQL Developer, он частенько сглаживает "острые углы".
...
Рейтинг: 0 / 0
NO_DATA_FOUND в отчете
    #37051946
Всех с наступившим НГ.
Насчет того, чтобы явно кастить тип тоже думал. Попробую. Всем спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / NO_DATA_FOUND в отчете
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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