网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  在存储过程中拥有"role"权限的特殊性     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:117次  录入:管理员--2008-03-17  
 

【赛迪网-it技术报道】在oracle数据库中,用户拥有的role权限在存储过程是不可以使用的。

示例如下:

sql> select * from dba_role_privs where grantee='test';

grantee granted_role admin_option default_role
------------ ------------ ------------ ------------
test dba no yes

--用户拥有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: 在"test.p_create_table", line 3
ora-06512: 在line 1

--大家可以看到,即使拥有dba role,也不能创建表。role在存储过程中不可用。

--遇到这种情况,我们一般需要显式进行系统权限,如grant create table to test;

--但这种方法太麻烦,有时候可能需要进行非常多的授权才能执行存储过程

--实际上,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定时任务    下一篇: 带你轻松掌握行分链与行迁移的相关概念
  相关文档
用简单的方法获取oracle语句的执行时间 05-16
实例讲解oracle数据库无法启动的解决方法 01-28
巧用数据库归档技术解决性能下降问题 04-14
oracle 10g使用rman创建physical standby 08-06
轻松掌握oracle数据库where条件执行顺序 04-21
带你深入了解oracle跟踪事件:set events 07-24
怎样理解分布处理和分布式数据库 09-29
Oracle 9i 的增强型内存使用率查看表 04-11
Oracle9i的新特性索引跳跃式扫描的实现 09-01
使用t-sql强制所有用户退出当前数据库 07-17
Oracle数据库异步调用基本原理及测试 04-11
oracle数据库共享连接和专用连接方式比较 (1) 04-28
oracle初始参数中三个关于license的设置 06-07
oracle数据库启动监听器不启动或打开出错 07-16
如何为用户提供回滚操作时间的准确评估 01-29
讲解数据仓库实施过程所需要考虑的步骤 02-20
0racle-07445 错误的解决方法和处理过程 09-29
使用impdp复制oracle的schema数据迁移 05-14
怎样才能删除所有表中的"procedure" 02-29
教你轻松掌握数据库链路的建立和使用 (1) 05-06
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息