понедельник, 9 июля 2012 г.

Named LOV в Oracle Apex

Оказывает в Oracle APEX 4.1.1.00.23, если для какого-то столбца отчёта указано использовать «text based on named LOV», то APEX выполняет этот LOV столько раз, сколько строк отчёта выводится на экран. И так для каждого столбца.
Соответственно, при просмотре Debug'а для страницы выдавалось по 50-100 исполнений такого когда:
BEGIN
  BEGIN
    SELECT
        /*+ cardinality(t 5) */
        disp, val bulk collect
      INTO wwv_flow_utilities.g_display,wwv_flow_utilities.g_value
      FROM TABLE(wwv_flow_utilities.get_temp_lov_data(1)) t
      ORDER BY disp;
  END;
END

У нас из-за такой обработки подвисала система, когда несколько пользователей открывали тяжёлые отчёты.
Сейчас исправили, вроде больше не подвисает.

2 комментария:

Denis комментирует...

Как исправили?

Alexander Koblov комментирует...

Убрали LOV из запросов. Запросы c join'ами к справочникам сделали.