当前位置:  数据库>oracle

实现Oracle数据库的存储过程中拥有“role”权限

    来源: 互联网  发布时间:2017-03-19

    本文导语: 很多人都有这样的了解,用户拥有的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 RESOUR...

很多人都有这样的了解,用户拥有的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

至此即可以执行了。


    
 
 

您可能感兴趣的文章:

  • mysql数据库添加用户及分配权限具体实现
  • JSP中权限分级一般是怎样实现的?
  • 一个登录系统,如何实现更具不同的权限,调用不同的登录页?
  • 用命令行工具实现文件夹权限问题
  • Android手机获取root权限并实现关机重启功能的方法
  • linux QT应用程序, 如何在代码中获取root权限,实现重启电脑
  • Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码
  • 使用navicat 8实现创建数据库和导入数据 管理用户与权限[图文方法]
  • EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例
  • 用C或C++编程,模拟可变分区存储管理且首次适应的算法实现存储器的分配与回收
  • 在SQL server 2000中用JAVA实现图片存储
  • 用proc怎么样实现并行启多个存储过程????????
  • 分页存储过程(用存储过程实现数据库的分页代码)
  • 使用存储过程实现循环插入100条记录
  • 如何实现插上多个USB存储设备,程序区分他们的一一对应关系?
  • java开源软件 iis7站长之家
  • 格式化是怎么实现的?格式化后存储的信息还在吗?
  • JavaScript实现的本地Redis存储 lodis
  • jdbc调用mysql存储过程实现代码
  • mssql server 存储过程里,bulk insert table from '路径+文件',路径固定,文件名不固定的实现方法
  • c#调用存储过程实现登录界面详解
  • 求素数,用vector存储的实现方法
  • SQLServer用存储过程实现插入更新数据示例
  • 存储过程配合UpdateDaset方法批量插入Dataset数据实现代码
  • MySQL 存储过程传参数实现where id in(1,2,3,...)示例
  • mysql存储过程实现split示例
  • 使用prepareCall调用存储过程,传送了TYPE_SCROLL_INSENSITIVE参数,但仍然无法实现分页功能.
  • Oracle主键自增及存储过程的实现
  • asp.net利用存储过程实现模糊查询示例分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使所有实现此接口(interface)的类拥有相同的构造器(contructor)?
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • boost unordered_map和std::list相结合的实现LRU算法
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • linux下如实现与window下的驱动器实现文件共享??
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • qt如何实现:操作键盘实现数据的滚动?
  • iphone cocos2d 精灵的动画效果(图片,纹理,帧)CCAnimation实现
  • 我想用APPLET实现读取客户端的图片文件,该如何实现?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • PING是用TCP,还是用UDP来实现的?或是采用其它协议实现的?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3