如何显示基于 APP_USER Id 的信息?甲骨文顶点
How to display infomation based on APP_USER Id ? oracle apex
我有一个 table 呼叫 employee,它具有 employee_name 和 status 字段。状态字段有'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>
我有一个 table 呼叫 employee,它具有 employee_name 和 status 字段。状态字段有'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>