首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux数据库>oracle>正文

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

http://www.oklinux.cn  2008-03-17  赛迪网 李思  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

【赛迪网-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


上一篇:Linux终端中文软件zhcon0.2.6的安装使用   下一篇:带你轻松掌握行分链与行迁移的相关概念

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·带你轻松掌握行分链与行迁移的相关概念
·教你快速掌握“外连接”的两种标准写法
·详细讲解Oracle表分区的相关概念及其优点
·实例讲解Oracle中一些关于权限的数据字典
·用SYS执行全文索引的建立时出现权限不足
·快速解决"Oracle"数据库中的常见问题
·详细讲解获得当前"SCN"的几种有效方式
·通过幸存的Oracle文件修复Oracle9i数据
·实例讲解"Oracle"数据库的分页显示
·带你轻松接触Oracle DBLink的简单运用
·教你快速掌握Oracle数据库的周数计算
·深入讲解Oracle数据库的多栏输出语句
·如何使用pipeline function获得实时输出
·Oracle数据库中如何对时间格式进行处理
·Oracle利用传输表空间导出导入数据的步骤
·讲解jython访问Oracle数据库的具体步骤
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·关于Oracle将目标数据库设为归档模式应
·Linux下OCI基础:配置Instant Client连
·Oracle中被锁定的解决办法
·Oracle 11G 无法连接到数据库实例故障
·浅谈创建Oracle数据库连接的两种方法
·如何从Oracle技术支持获得更多
·Oracle数据库中安全知识介绍
·Oracle推出Linux服务并不成功
·Oracle专用服务器的内存结构分布原则
·如何在RAC环境下修改Oracle字符集
·Oracle过程中执行动态SQL或DDL语句
·2008年Oracle错误、备份、升级等最热门
  阅读排行
·详解远程SHELL下安装配置RedHat ES 5的
·Ubuntu上安装Oracle 10G及相关配置
·Oracle高级复制(同步复制)配置步骤详细
·如何修改遗失的MySQL的ROOT用户密码
·Redhat Linux AS4 安装Oracle 10g(包括
·Linux下OCI基础:配置Instant Client连
·解决启动数据库时发生的ORA-12528错误
·在 Oracle Enterprise Linux 上升级到
·Oracle 10g表空间创建的完整步骤
·centos 5.0中成功安装Oracle10g (1020
·如何在RAC环境下修改Oracle字符集
·Oracle数据库导入导出方法的个人总结
·巧用Oracle执行计划机制提高查询性能
·Oracle 10g 在AIX 5.3上安装过程笔记
·Linux真机环境Oracle 10gR2 RAC 安装完
网摘收藏: