根据oracle apex中的lov选择设置页面项值

问题描述

我有以下问题。 我有一个带有以下 sql 查询的 popUp-lov 类型的页面元素:

SELECT u.Lastname || ',' || u.Firstname AS displayed,u.UUID as ID

from STAFF s

left outer join USERS u on s.UUID=u.UUID

union

SELECT u2.Lastname || ',' || u2.Firstname AS displayed,m.MAID AS ID

FROM MANAGER m

left outer join USERS u2 on m.UUID=u2.UUID

通过这种方式,我想从两个表中向用户展示可供选择的人。 但是,我希望一旦用户选择了一个人,就设置了相应表的外键。 这些表的外键将保存在单独的列中。换句话说,我创建了两个隐藏的页面项目,每个项目都有一个对应表的外键约束。根据值列表的返回值,我想然后在相应的页面项目中设置页面项目(一个为空)。

为了实现这一点,我首先创建了一个函数来检查 lov 的返回值是否作为 ID 在表中。

create or replace function search_id (p_key_value in number)
return number
is
found_person number;
begin

select m.ID into found_person from MANAGER m where p_key_value=m.ID ;
if sql%rowcount = 1 then
return found_person;
end if ;
exception
when no_data_found then
return null;
end;

更改了 lovsql 查询

SELECT u.Lastname || ',u.UUID as ID
    from USERS u 
   
     and u.UUID in (select u.UUID
               from STAFF s
               left outer join USERS u on s.UUID=u.UUID)
                OR u.UUID in (select u.UUID
               from MANAGER m
               left outer join USERS u on m.UUID=u.UUID)

改变的功能

create or replace function search_id(p_key_value in number)
return number
is
found_person number;
begin

select s.STID
into found_person
from STAFF s
where s.UUID=p_key_value;

if sql%rowcount = 1 then
return found_person;
end if ;
 exception
  when no_data_found then
    select m.MID
into found_person
from MANAGER m
where m.UUID=p_key_value;;
  end;

动态动作: 然后,我使用弹出的 lov页面项创建了一个动态操作。 当页面项更改时(因此当用户lov 中选择一个值时)会触发动态操作。

动作是:使用以下pl/sql函数执行pl/sql代码

    declare
found_person number;
begin
found_person:= search_id(V('P12_RESPONSIBLE')); 
apex_util.set_session_state('P12_MANAGER_ID',found_person);
apex_util.set_session_state('P12_STAFF_ID',found_person);
exception
when no_data_found then
null;
end;

提交项目:P12_RESPONSIBLE 返回项目:P12_MANAGER_ID,P12_STAFF_ID

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)