oracle存储过程中提示“权限不足”的解决办法

转载 2014年01月27日 10:36:00
我们知道,用户拥有的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
--已经可以执行了。

相关文章推荐

以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析

以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析 oracleORA-1031sysdbaAUTHENTICATION_SERVICESdba 在linux 操作系统...
  • haiross
  • haiross
  • 2013年10月16日 10:58
  • 27390

Oracle权限不足:创建view权限不足

用户A和B都有dba权限,但是在A用户中创建一个视图访问用户B的表,提示"oralce 权限不足” 分析:在B用户中可以直接查询A用户的表,但是在创建视图时就会报无权限 解决办...

解决Oracle创建视图(VIEW)权限不足的方法

问题描述:在scott用户下创建视图的时候,报错:权限不足。(其他用户以此类推) 解决方法: 以dba用户登录sqlplus / as sysdba赋予scott用户创建VIEW的权限gran...

ORACLE 创建视图时,提示用户权限不足

问题:使用scott登录Oracle以后,创建视图,提示“权限不够”,怎么解决? 回答: 这是因为scott这个帐户目前没有创建视图的权限。解决方法为: 首先使用system帐户进行登录,其中“...

ORACLE 创建视图时,提示用户权限不足

ORACLE 创建视图时,提示用户权限不足 问题:使用scott登录Oracle以后,创建视图,提示“权限不够”,怎么解决? 回答: 这是因为scott这个帐户目前没有创建视图的权限。解...

oracle存储过程创建表权限不足解决方法

数据库当前用户授予了connect、resou
  • zpil321
  • zpil321
  • 2014年05月27日 17:54
  • 3129

存储过程执行DDL语句提示ORA-01031错误:权限不足

过程执行DDL语句提示ORA-01031错误 [sql] --创建测试用户 create user hat identified by hat default tablespace do...

存储过程中调用EXECUTE IMMEDIATE的“权限不足”

EXECUTE IMMEDIATE是Oracle中使用动态SQL的一种方法,可以直接执行,也可以在存储过程中调用。然而在存储过程中调用可能会遇到权限不足的问题,如在存储过程中执行重建索引语句: sq...

ORACLE执行存储过程权限不足

ORACLE新建了一个存储过程,里面包含CREATE和DROP,逐条依据可以执行,但是执行整个存储过程报权限不足的错误。 在网上看到,Oracle规定,在默认的情况下,在调用存储过程用户的角...

执行oracle的sql脚本提示:“ORA-01031: 权限不足”解决办法!!!

 说明: procedure 本身可以执行.但是放到job中执行错误 ORA-01031: 权限不足 ORA-06512: 在"EMMA.PACK_SMS", line 16 ORA-065...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle存储过程中提示“权限不足”的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)