所以最近我开始尝试数据库,我还是新手,虽然我有几个例子与功能有关...我似乎无法弄清楚出了什么问题。我的逻辑。
所以我有一个名为“教程”的表格,我正在尝试将表格中的一行与登录用户匹配。我确定我已将登录用户设置为 v_user ,所以我认为这只是以下代码中的逻辑。
if v_emp_no != 0 and (select tutor_emp_no into v_tutor_emp_no from tutorial where
lower(tutor_emp_no) = v_user) then
-- Employee is a Tutor
is_tutor := 1;
end if;
当然这不是完整的功能:)
非常感谢任何帮助或建议! :)
**编辑**
这是策略,它适用于使用oe拥有的表在创建的用户'sec_admin'下给我的示例,但在我的给定 sys 角色中不起作用用户名为'dummy'。
begin
dbms_rls.add_policy('oe',
'enrol',
'accesscontrol_enrol',
'sys',
'f_policy_enrol',
policy_type => dbms_rls.context_sensitive);
end;
/
我应该将“ oe ”更改为“虚拟”还是“ sys ”?我希望此政策适用的表格称为注册,它是通过我的虚拟用户我创建的表格。再次感谢!
答案 0 :(得分:1)
我们无法在SQL
语句中指定IF
,因此我们首先查询,然后检查IF
select MAX(tutor_emp_no) into v_tutor_emp_no from tutorial where
lower(tutor_emp_no) = v_user;
if v_emp_no != 0 and v_tutor_emp_no is NOT NULL then
-- Employee is a Tutor
is_tutor := 1;
end if;
如果找不到记录,MAX()
只是返回NULL
。