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

давайте воспроизводимый тест-кейс и версию APEX. А то у Вас уже псевдонима q не хватает в запросе. :) Может, и не возвращает ничего Ваша функция...
...
Рейтинг: 0 / 0
31.12.2010, 08:02
    #37043403
lZy
lZy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NO_DATA_FOUND в отчете
Была похожая проблема с вьюшками: препеделала нужные вьюхи, что бы они обращались только к таблицам. В результате отчет начал работать.
Когда разбиралась пыталась и функциями возвращать нужные значения, но было так же: в навигаторе отрабатывало, через апекс "no_data_found". Более красивого решения, чем построение сложного запроса, обращающегося только к таблицам, на тот момент не смогла найти.
...
Рейтинг: 0 / 0
31.12.2010, 10:21
    #37043480
NO_DATA_FOUND в отчете
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
31.12.2010, 10:27
    #37043490
NO_DATA_FOUND в отчете
lZy,

:) тоже думал об этом... вытащил запрос из функции. Вставил вместо указанного выше селекта... Результат - 404 ошибка. Стал разбираться - запрос более 37 тыс символов - апексу от этого стало не хорошо :). Править такой запрос - не самое приятное дело. Хотелось бы отделаться "меньшей кровью".
P.S. О кривости модели БД и тому, почему запрос получился именно таким - отдельная тема, которую предлагаю не поднимать :)).
...
Рейтинг: 0 / 0
31.12.2010, 11:22
    #37043555
NO_DATA_FOUND в отчете
Получилось починить. В чем было дело, я так и не понял. Как обошел:
Не так давно возился с кросс-таб отчетом. Нашел вот такой способ:
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
31.12.2010, 14:14
    #37043718
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NO_DATA_FOUND в отчете
Гришков МаксимПолучилось починить. В чем было дело, я так и не понял.

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


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