扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年5月25日
关键字: ORACLE
在本页阅读全文(共2页)
角色可以通过SET ROLE命令动态激活和禁用,如果Oracle需要不断检查哪个角色和许可当前处于激活状态,则会带来巨大的管理负担。
下面的代码是一个更新HR雇员文件的简短存储过程(这段代码用一个同义字EMPLOYEES来代表HR.EMPLOYEES)。当ABEL在第一种情况下试图用直接权限编辑这个文件时,编辑取得成功;当他在第二种情况下仅用间接权限编辑时,编辑失败。
CREATE OR REPLACE PROCEDURE update_emp (
p_employee_id IN NUMBER
,p_salary IN NUMBER
)
AS
v_department_idemployees.department_id%TYPE;
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 = 100 THEN
UPDATE local_employees
SET salary = p_salary
WHERE employee_id = p_employee_id;
END IF;
END;
/
有趣的是,向PUBLIC授予许可和直接授予所有用户许可相同。PUBLIC常被认为是一个角色,但它并不是一个角色。它是一个用户集而不是一个许可集。如果向PUBLIC授权HR.EMPLOYEES的许可,ABEL将能够建立他自己的存储过程。虽然在EMPLOYEES表中我们不推荐这样做,但任何授予给PUBLIC的表都可以自由地在存储过程中应用。
Bob Watkins(OCP、MCDBA、MCSE、MCT)是一位有25年经验的计算机专业人士,从事过技术培训师、顾问与数据库管理员等职。他现在是达拉斯沃思堡地区B. Watkins数据库咨询和培训公司的高级顾问兼管理合伙人。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者