我有一个表,其中包含从外部过程收集的值。
Name | State
Dan | Active
Stan | Active
Maggy| Inactive
然后,在 Apex 上,我有一个表格形式,其中包含来自另一个表的选择列表,允许用户更新 State 字段。该表如下:
STATE_ID | STATE_NAME
Activate | Active
Deactivate| Inactive
在 LOV 中使用 PL/SQL 查询来调用该字段。然后它将切换选项并显示为:
Name | State |Set_state
Dan | Active | Activate / Deactivate (in dropdown LOV)
Stan | Active | Activate / Deactivate (in dropdown LOV)
Maggy| Inactive | Activate / Deactivate (in dropdown LOV)
这意味着用户可以决定 Dan 应该处于非活动状态,然后从下拉列表等中为所有相关名称选择停用。
现在我遇到的问题是程序从外部发送到 Perl 脚本,以便在 Oracle 之外执行各种操作。因此,我需要创建一个进程,将所有名称和“Set_State”以数组或列表形式发送到外部脚本作为数组或文件。
这是我最初所做的,但显然不能作为 :P1_NAME 和 :SET_STATE 是列的名称而不是实际值。希望我在这里有意义:)
DECLARE
set_state VARCHAR2(20);
name VARCHAR2(20);
BEGIN
name := :P1_NAME;
set_state := :SET_STATE;
mytask := 'Change_state';
PROC(name, set_state); < This sends Name, Set_state to below procdure
END;
当单击提交按钮时,请有人帮我获取最后一个查询以包含 P1_NAME 和 SET_STATE 列中的所有值,而不仅仅是列的名称。以数组或列表形式。
因此,一旦我将 STAN 更改为 Inactive 并将 Maggy 更改为 Active 并单击按钮,它应该发送:Stan Inactive Maggy Active
到外部程序。
这是调用 Perl 脚本的过程。与问题无关,但无论如何都要粘贴。
create or replace PROCEDURE "PROC" (name IN VARCHAR2, set_state IN VARCHAR2) IS
BEGIN
DECLARE
BEGIN
mytask := 'PROC';
myscriptname := 'Script';
dbms_scheduler.create_job(
job_name => myscriptname
, job_type => 'EXECUTABLE'
, job_action => '/app/proc.pl'
, number_of_arguments => 2
, enabled => FALSE);
dbms_scheduler.set_job_argument_value(myscriptname,1,name);
dbms_scheduler.set_job_argument_value(myscriptname,2,set_state);
dbms_scheduler.enable(myscriptname);
end;
END;