角色(數據庫權限集)與存儲過程
假設一個HR用戶向用戶ABEL授予EMPLOYEES表的一些許可
GRANT select
這個語句直接把上述四個權限授予給用戶ABEL
GRANT select
如果ABEL已被授予HR_ROLE角色
不管使用哪種方法
但是
Oracle要求直接向用戶授予一個存儲過程中的非擁有對象許可
角色可以通過SET ROLE命令動態激活和禁用
下面的代碼是一個更新HR雇員文件的簡短存儲過程(這段代碼用一個同義字EMPLOYEES來代表HR
CREATE OR REPLACE PROCEDURE update_emp (
p_employee_id IN NUMBER
)
AS
v_department_idemployees
BEGIN
SELECT department_id INTO v_department_id
FROM employees
WHERE employee_id = p_employee_id;
UPDATE employees
SET salary = p_salary
WHERE employee_id = p_employee_id;
IF v_department_id =
UPDATE local_employees
SET salary = p_salary
WHERE employee_id = p_employee_id;
END IF;
END;
/
有趣的是
From:http://tw.wingwit.com/Article/program/Oracle/201311/17438.html