如何显示基于 APP_USER Id 的信息?甲骨文顶点

How to display infomation based on APP_USER Id ? oracle apex

我有一个 table 呼叫 employee,它具有 employee_namestatus 字段。状态字段有'admin''staff'

当我以应用程序用户身份登录时(一旦我是管理员),我希望能够看到所有员工,无论是管理员还是员工。但是,当我以应用程序用户身份登录时(我属于员工类别),我只想查看自己的信息。

我正在使用

SELECT *
FROM employee
 WHERE UPPER(employee_name) = UPPER(:APP_USER) 
    OR status = 'staff'

但它没有给我想要的结果。谁能帮帮我?

我建议您创建一个函数来显示 APP_USER 是否是(或不是)管理员。然后在 SELECT 语句中使用它。

这是一个例子:

SQL> create table employee
  2    (employee_name varchar2(20),
  3     status        varchar2(20));

Table created.

SQL> insert into employee
  2    select 'LITTLE', 'staff' from dual union all
  3    select 'FOOT'  , 'admin' from dual union all
  4    select 'RAWLE' , 'staff' from dual;

3 rows created.

SQL> create or replace function f_admin_01 (par_app_user in varchar2)
  2    return number
  3  is
  4    -- RETURN 1 if par_app_user is 'admin'
  5    --        0 if it is not
  6    retval number;
  7  begin
  8    select case when status = 'admin' then 1
  9                else 0
 10           end
 11      into retval
 12      from employee
 13      where employee_name = par_app_user;
 14
 15    return retval;
 16  end;
 17  /

Function created.

测试(请注意,在 Apex 中,您显然不必声明变量或为其赋值。此外,:APP_USER 始终为大写,因此应用 [=15 毫无意义=] 函数):

SQL> var app_user varchar2(20)
SQL> exec :app_user := 'LITTLE'

PL/SQL procedure successfully completed.

SQL> select *
  2  from employee
  3  where employee_name = case when f_admin_01(:APP_USER) = 1 then employee_name
  4                             else :APP_USER
  5                        end;

EMPLOYEE_NAME        STATUS
-------------------- --------------------
LITTLE               staff

SQL> exec :app_user := 'FOOT'

PL/SQL procedure successfully completed.

SQL> select *
  2  from employee
  3  where employee_name = case when f_admin_01(:APP_USER) = 1 then employee_name
  4                             else :APP_USER
  5                        end;

EMPLOYEE_NAME        STATUS
-------------------- --------------------
LITTLE               staff
FOOT                 admin
RAWLE                staff

SQL>