Доступ к значениям Apex_application.g_fXX из хранимой процедуры - PullRequest
1 голос
/ 27 февраля 2012

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

TIA, Tamas

1 Ответ

1 голос
/ 27 февраля 2012

Конечно, почему бы не сработать?

CREATE OR REPLACE PACKAGE "APXPA_TEST" IS
   PROCEDURE process_something;
   PROCEDURE process_something2(i_values IN apex_application_global.vc_arr2);
END "APXPA_TEST";
/
CREATE OR REPLACE PACKAGE BODY "APXPA_TEST" IS   
   PROCEDURE process_something
   IS
   BEGIN
      FOR i in 1..apex_application.g_F02.COUNT
      LOOP
         apex_debug_message.log_message('processing '||apex_application.g_f02(i)||'...');
      END LOOP;
   END;

   PROCEDURE process_something2(i_values IN apex_application_global.vc_arr2)
   IS
   BEGIN
      FOR i IN 1..i_values.COUNT
      LOOP
         apex_debug_message.log_message('processing '||i_values(i)||'...');       
      END LOOP;
   END;
end "APXPA_TEST";
/

Я сделал страницу с табличной формой на основе EMP.Я создал процесс страницы с точкой процесса On Submit - After Computations and Validations, прежде чем MRU.

apxpa_test.process_something;
apxpa_test.process_something2(apex_application.g_f02);

G_F02 содержит ENAME

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

Processes - point: AFTER_SUBMIT
...Process "some process" - Type: PLSQL
...Execute Statement: begin apxpa_test.process_something; apxpa_test.process_something2(apex_application.g_f02); end;
processing KING...
processing CLARK...
processing MILLER...
processing KING...
processing CLARK...
processing MILLER...
...Process "ApplyMRU" - Type: MULTI_ROW_UPDATE
...Process "ApplyMRD" - Type: MULTI_ROW_DELETE
...