我想从数据库存储过程中访问Apex_application.g_fXX值,方法是将整个数组作为输入参数传递,或者从数据库中读取会话状态。这可能吗?我尝试这样做的原因是我想将所有繁重的处理都移到数据库中。
TIA,Tamas
答案 0 :(得分:1)
当然,为什么它不起作用?
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的表格形式的页面。我在MRU之前创建了一个包含流程点On Submit - After Computations and Validations
的页面流程。
apxpa_test.process_something;
apxpa_test.process_something2(apex_application.g_f02);
G_F02
持有ENAME
现在运行该页面并启用调试。然后只需提交表单(您不需要编辑任何内容),然后转到查看调试。选择最后一个条目。滚动到它遍历页面进程的位置:您将在那里看到输出。 (我只使用了deptartment 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