首页 如何在Oracle存储过程中拥有role权限

如何在Oracle存储过程中拥有role权限

举报
开通vip

如何在Oracle存储过程中拥有role权限如何在Oracle存储过程中拥有role权限 我们知道,用户拥有的role权限在存储过程是不可用的。如: SQL> select * from dba_role_privs where grantee='SUK'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ------------ ------------ SUK DBA NO YES SUK CONNECT NO YES SUK RESOURCE NO YES 用户SUK拥有DBA这个role ...

如何在Oracle存储过程中拥有role权限
如何在Oracle存储过程中拥有role权限 我们知道,用户拥有的role权限在存储过程是不可用的。如: SQL> select * from dba_role_privs where grantee='SUK'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ------------ ------------ SUK DBA NO YES SUK CONNECT NO YES SUK RESOURCE NO YES 用户SUK拥有DBA这个role 再创建一个测试存储过程: create or replace procedure p_create_table is begin Execute Immediate 'create table create_table(id int)'; end p_create_table; 然后测试 SQL> exec p_create_table; begin p_create_table; end; ORA-01031: 权限不足 ORA-06512: 在"SUK.P_CREATE_TABLE", line 3 ORA-06512: 在line 1 可以看到,即使拥有DBA role,也不能创建表。role在存储过程中不可用。 遇到这种情况,我们一般需要显式进行系统权限,如grant create table to suk; 但这种方法太麻烦,有时候可能需要进行非常多的授权才能执行存储过程 实际上,oracle给我们提供了在存储过程中使用role权限的方法: 修改存储过程,加入Authid Current_User时存储过程可以使用role权限。 create or replace procedure p_create_table Authid Current_User is begin Execute Immediate 'create table create_table(id int)'; end p_create_table; 再尝试执行: SQL> exec p_create_table; PL/SQL procedure successfully completed 已经可以执行了。
本文档为【如何在Oracle存储过程中拥有role权限】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_995397
暂无简介~
格式:doc
大小:12KB
软件:Word
页数:0
分类:互联网
上传时间:2017-11-17
浏览量:6