我有一个表格,其中包含从外部程序中收集的值。
Name | State
Dan | Active
Stan | Active
Maggy| Inactive
在Apex上,我有一个表格形式,其中包含另一个表中的选择列表,允许用户更新状态字段。该表如下:
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;
答案 0 :(得分:0)
使用标准表格形式(可更新的SQL查询) - 不是包含apex.item
API调用的经典报告。
我对您的设置做了一些假设,因为它不是100%明确的。如果它不是一直匹配它不应该太重要 - 以它为例。
使用的查询:
SELECT name, state_id
FROM states
因此:
NAME
:文本字段,或仅在启用保存状态时显示STATE_ID
:选择列表,以及您已使用的LOV 在验证后创建一个提交过程。确保将该过程与表格形式相关联。将范围设置为&#39;所有创建和修改的行&#39;。
这样做将允许您编写PLSQL,它将在表格形式的每个符合条件的行的范围内执行。您可以使用绑定变量语法来引用提交其状态的列(例如,文本字段,隐藏项,选择列表,复选框)。
注意&#34;所有行&#34;有效地表示当前分页中已提交的那些行&#34;。
在这种情况下,我可以使用PLSQL下面的代码来执行已更改的每一行的过程。
BEGIN
PROC(name => :NAME, set_state => :STATE_ID);
END;
您可以在绑定变量语法中引用实际的列名(标题)。关键点是该过程必须与表格形式相关联!
(如果你没有真正的&#34;真实的表格形式,你应该指出这一点,这就是我要求提供源SQL的原因。这个信息非常重要在帖子中找到了很多其他信息!)