Цель: ограничивать элементы в атрибуте интерфейса (выпадающий список) в зависимости от входных параметров. В нашем примере - три атрибута CAUSE_1, CAUSE_2, CAUSE_3, содержащих один и тот же комбо-бокс. Нужно выводить только те элементы, которые актуальны на текущий момент (в параметрах интегратора вводится месяц и год)
Нас интересует пункт WHERE:
Нас интересует пункт WHERE:
Гарантированно не получится:
- использовать в выражении WHERE переменную сессии/пакета. Интегратор запускается в отдельной сессии;
- использовать ссылки на другие атрибуты;
- использовать динамические конструкции.
Зато мы можем использовать в выражении:
- переменные окружения $ENV$ ($env$.userid, $env$.appid, $env$.respid);
- параметры интегратора через $PARAM$ ($PARAM$.param1).
DECLARE v_object_code CONSTANT VARCHAR2 (30) := 'XXMY_DEVIATION'; -- код объекта v_interface_code CONSTANT VARCHAR2 (30) := v_object_code || '_INTF'; begin UPDATE bne_interface_cols_b c SET val_type = 'TABLE', val_id_col = 'cause_fullname', val_mean_col = 'cause_fullname', val_obj_name = 'XXMY_DEVIATION_CAUSES', val_addl_w_c = 'XXMY_DEVIATION_PKG.compare_dates(p_month => $PARAM$.P_MONTH,p_year => $PARAM$.P_PERIOD_YEAR,p_start_date => start_date,p_end_date => end_date) = 1', lov_type = 'POPLIST' WHERE c.interface_code = v_interface_code AND (c.interface_col_name = 'CAUSE_1' OR c.interface_col_name = 'CAUSE_2' OR c.interface_col_name = 'CAUSE_3'); commit; end;
Комментариев нет :
Отправить комментарий