网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.深入了解Oracle 10g新型层次查询.
.RMAN命令.
.关于Oracle数据库的性能优化心得.
.研究生管理信息系统的开发流程二.
.深入讲解游标类型为什么会产生数.
.Oracle 的数据库的数据备份与恢复.
.[技术]oracle rac安装过程详解 zt.
.Linux日志管理详解.
.Linux 指令大全(3).
.Oracle中屏蔽英文提示信息方法二.
.如何使用xine 0.5.
.SQL Server与Oracle链接服务器应.
.处理未决事务.
.ORACLE在HP-UX下的系列问题处理(.
.恢复备份查询手册.
.如何正确使用 HTTP 安装 Oracle .
.关于lob字段的处理(通过modplsql.
.Oracle数据库的自动备份.
.ORACLE9i新特性 索引跳跃式扫描的.
.Rman操作简单分析.

在存储过程中拥有"role"权限的特殊性

发表日期:2008-3-17


在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定时任务 人气:1636
下一篇:带你轻松掌握行分链与行迁移的相关概念 人气:815
浏览全部Oracle的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐