ITPub博客

首页 > 数据库 > Oracle > 存储过程与权限(二)

存储过程与权限(二)

原创 Oracle 作者:luisedalian 时间:2014-01-15 13:52:03 0 删除 编辑
2.调用者权限,AUTHID CURRENT_USER

存储过程有编译和执行2个阶段。

从编译阶段来看,调用者权限存储过程与定义者权限存储过程是一样的,角色都无效,都必须进行显式授权。

但在执行阶段,调用者权限存储过程的role是生效可见的。

点击(此处)折叠或打开

  1. CREATE USER userb IDENTIFIED BY userb;
  2. GRANT CONNECT, RESOURCE TO userb;

  3. conn userb/userb;
  4. CREATE TABLE userb_tab AS SELECT * FROM all_objects;

  5. conn luise/luise;

  6. --调用者权限存储过程(同样没有权限)
  7. CREATE OR REPLACE PROCEDURE luise_proc1
  8. AUTHID CURRENT_USER
  9. AS
  10. BEGIN
  11.   DELETE FROM userb.userb_tab;
  12.   COMMIT;
  13. END;
  14. /

  15. Warning: Procedure created with compilation errors.

  16. --使用动态SQL,将权限的检查推迟到运行时,即可成功编译
  17. CREATE OR REPLACE PROCEDURE luise_proc1
  18. AUTHID CURRENT_USER
  19. AS
  20. BEGIN
  21.   EXECUTE IMMEDIATE \'DELETE FROM userb.userb_tab\';
  22.   COMMIT;
  23. END;
  24. /

  25. --执行(正常)
  26. EXEC luise_proc1;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1070898/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 存储过程与权限
下一篇: 提防DDL提交事务
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6040856