Как работает подстановка переменных привязки для элементов страницы в ORACLE APEX
Мне было интересно, как ORACLE APEX определяет, должно ли определенное значение элемента страницы идти как число или varchar2 при использовании в вызове хранимой процедуры.
my_pkg.proc1(P1 =>:P2_ITEM1);
Здесь, как механизм APEX определяет, ожидает ли параметр P1 для proc1 число, переменную varchar2 или дату.
Расширить:
У меня есть сетка. С запросом, как показано ниже
Select * from table(my_pkg.pipe_func(:P2_PARAM1,:P2_PARAM2));
Когда пользователь нажимает кнопку, мне нужно получить текущее значение состояния сеанса этих подстановок привязки, и я хочу сохранить указанный выше запрос выбора в таблице как
Select * from table(my_pkg.pipe_func('ParamVal',256));
Как этого добиться?
1 ответ
База данных Oracle выполняет эту чертову работу точно так же, как она делала это годами. Вы можете увидеть это вv$sqlarea
.
И вам следует явно преобразовать эти связываемые переменные, поскольку они по сути будут обрабатываться как varchar - так же, как они хранятся.
where id = to_number(:p1_id)
А с точки зрения APEX, если пользователь изменяет значение на экране, и вы вызываете динамическое действие для обновления области с использованием этих элементов, вы должны перечислить их в атрибуте "Элементы страницы для отправки", непосредственно под областью SQL. Это обеспечит обновление состояния сеанса базы данных в соответствии с тем, что находится в браузере, перед выполнением обновления.