Доступ к элементам страницы для отправки значений внутри триггера в oracle apex

Я хочу получить доступ к дополнительному значению элемента страницы из триггера, которого нет в связанной таблице данных. Для примера у меня есть таблица, как показано ниже,

      Employee
----------------------

empId | fName | lName 
----------------------
1     | John  | Doe
----------------------
2     | Jane  | Doe 

Элементы формы Apex будут похожи,

P500_EMPID, P500_FNAME, P500_LNAME

У меня есть дополнительный элемент страницы под названием P500_SOMEIDS, который представляет собой список с множественным выбором. Я хочу получить доступ к этим выбранным значениям внутри After Insert триггера таблицы Employee. Я попытался добавить этот элемент в «Элементы страницы для отправки». Но я не знаю, как получить к нему доступ внутри этого триггера. Является ли это возможным..? и как..?


person Pumayk26    schedule 23.06.2020    source источник
comment
как вы вставляете данные в таблицу сотрудников. Вы используете область апексной формы?   -  person Koen Lostrie    schedule 23.06.2020
comment
да. вставить данные, обрабатываемые формой вершины.   -  person Pumayk26    schedule 23.06.2020


Ответы (2)


В процессе страницы, который обрабатывает обновление вашей таблицы (это будет процесс типа Form - Automatic Row Processing (DML), в разделе Settings есть атрибут Return Primary Key (s) после Insert. Если для него установлено значение On, то Оператор insert вернет значение вставленной строки в элемент страницы, который определен как ваш первичный ключ. Пример:

  • Создать форму на emp
  • Сделайте P1_EMPNO элементом страницы первичного ключа
  • Предположим, вы создаете новую строку, и ее значение empno равно 1000. Затем после запуска процесса автоматической обработки строк значение P1_EMPNO устанавливается на 1000.

Если вы хотите вставить строки в другую таблицу, ссылающуюся на вновь созданный empno, вы можете создать процесс страницы (который выполняется после обработки строки) с кодом типа pl / sql следующим образом:

BEGIN
  INSERT INTO some_other_table (empno) VALUES (:P1_EMPNO); 
END;

По возможности следует избегать использования триггеров для бизнес-функций.

person Koen Lostrie    schedule 23.06.2020
comment
Спасибо за ответ, Коэн. Элемент страницы, который я упомянул в вопросе, является элементом страницы с множественным выбором. Таким образом, он возвращает набор данных типа 1,3,5. Я хочу поместить эти числа в IN () и разделить их запятыми, а не строками. Вы можете мне помочь с этим ..? - person Pumayk26; 23.06.2020
comment
Это совсем другой вопрос. Можете ли вы опубликовать новый, пожалуйста? - person Koen Lostrie; 23.06.2020

Вместо триггера базы данных используйте хранимую процедуру, которая будет выполнять ту же работу. Передайте любое количество параметров (включая элемент P500_SOMEIDS).

person Littlefoot    schedule 23.06.2020
comment
Спасибо за ответ. Можете ли вы сказать мне, как получить доступ к этому элементу ..? - person Pumayk26; 23.06.2020
comment
Я использовал триггер, потому что хочу вставить данные в другую таблицу со вставленным идентификатором. После вставки триггера. - person Pumayk26; 23.06.2020
comment
Не используйте триггер. Используйте хранимую процедуру и вызывайте ее из процесса страницы на вершине страницы после отправки. - person Koen Lostrie; 23.06.2020