开发者社区> 余二五> 正文

存储过程中的权限

简介:
+关注继续查看
如何在存储过程中拥有role的权限
我们知道,用户拥有的role权限在存储过程是不可用的。如:
select * from dba_role_privs where grantee='SUK';
我们知道,用户拥有的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
    --已经可以执行了。









本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/196624,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
文件存储管理权限组的规则及操作
本文介绍如何在NAS控制台上管理权限组,包括创建权限组和规则、查看权限组列表、查看规则列表、删除权限组、删除规则等。
422 0
oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息
查看当前用户的缺省表空间   SQL>select username,default_tablespace from user_users;   查看当前用户的角色   SQL>select * from user_role_privs;   查看当前用户的系统权限和表级权限   SQL>select * from user_sys_privs;       
1255 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13820 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
25065 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18659 0
mysql 跑存储过程没有权限的问题
mysql 跑存储过程没有权限的问题1.赋予权限GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY "root";2.刷新权限FLUSH PRIVILEGES;
1126 0
+关注
20381
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载