добро пожаловать в APEX.
Итак, во-первых, если вы хотите сослаться на элемент на странице, он обычно имеет имя типа P1_NEW. Где 1 - это номер страницы, а NEW - это то, что вы обычно меняете, чтобы отразить то, что он есть на самом деле.
Вы ссылаетесь на этот элемент, помещая: перед ним.
Таким образом, код будет быть примерно таким:
IF :P1_ITEM_A > 0 THEN
:P1_ITEM_B := :P1_ITEM_A + 5;
ELSIF :P1_ITEM_A = 0 THEN
:P1_ITEM_B := :P1_ITEM_B + 1;
END IF;
Вам всегда нужно завершать sh оператор с помощью; и IF должен быть закрыт, поэтому вам нужно закончить его "END IF;" И вы также должны отправить элемент, если код находится в Dynami c Action. Отправка в основном означает, что значение фактически сохраняется, а не просто отображается. На это вы наткнетесь, например, если хотите, чтобы два пустых элемента, в которые вы записываете, и кнопку, заполняющую третий элемент на основе первых двух, если первые два не отправлены, то действие Dynami c будет видеть их пустыми.
Что касается второй части вашего вопроса, я не совсем уверен, о чем вы спрашиваете, потребуется больше знаний о том, как выглядит страница и что вы хотите сделать sh.
РЕДАКТИРОВАТЬ ДЛЯ ОТВЕТА КОММЕНТАРИИ: Я думаю, что у вас есть интерактивный отчет с формой. Это означает, что вы щелкаете значок карандаша в таблице, и открывается форма с этими тремя элементами, кнопками СОХРАНИТЬ и ОТМЕНА.
Во-первых, одна вещь, которую вы всегда должны пробовать при работе с DA (динамические c действия ), чтобы DA запускал предупреждение о действии. Таким образом вы увидите, сработало ли оно на самом деле.
Ваша установка должна сработать нормально. Как только вы подтвердите, что DA запускается, установите Action на код PL SQL. Из того, что вы мне сказали, я думаю, вам следует установить элементы для отправки: P5002_OverTimes, P5002_Salary
и элементы для возврата: P5002_OverTimes, P5002_Salary
И код PL SQL:
IF :P5002_OverTimes > 5 THEN
:P5002_Salary := :P5002_Salary + 5;
ELSIF :P5002_OverTimes = 5 THEN
:P5002_Salary := :P5002_Salary + 2;
ELSE
:P5002_Salary := :P5002_Salary + 1;
END IF;
Затем, просто чтобы убедиться, что я хочу добавить еще одно действие, также код PL SQL, код просто «NULL;» и я снова отправляю элементы.
Затем изменение должно быть видно на странице (элементы должны иметь новые значения), и вы можете сохранить, и эти значения будут go в таблице.
Оператор IF находится в правильном месте для этого сценария. Вы, вероятно, думаете о состоянии на стороне клиента. Это значит, что вы можете настроить DA для срабатывания только при выполнении определенного условия. В вашем случае теоретически у вас может быть три DA с условиями на стороне клиента, которые проверяют значение OverTime, один, где VALUE> 5, один, где VALUE = 5, и один, где VALUE <5, и у каждого из них есть действие Set Value. Это можно было бы сделать, но это просто излишне сложно и требует больше работы, чем нужно. </p>