存储过程权限不足
1. oracle 存储过程 权限问题 PL/sql: ORA-01031: 权限不足
权限不足就是说你还没有连接到服务器,或者你连接过了又断开了,再次连接上了就该不会出现权限问题。
2. PL/SQL建好存储过程,编译也成功了,但是用execute执行的的 提示权限不足(ora-01031)
用你有dba权限的用户执行这个试试。
;
如果还报错就要看代码了。
3. oracle 测试存储过程 是哪个权限
Oracle规定,在默认的情况下,在调用存储过程用户的角色不起作用,即在执行存储过程时只有Public权限。所以在调用Create table时,会有权限不足的提示。
只需要使用IR Procere就能很快解决问题啦,把代码修改为如下:
CREATE OR REPLACE PROCEDURE TestProc AUTHID current_user
IS
flag number;
BEGIN
select count(*) into flag from all_tables where table_name='TEMP3';
if (flag=0) then
execute immediate 'create global temporary table TEMP3 on commit preserve rows as select * from BUSI_ECONTRACT';
else
execute immediate 'insert into TEMP3 select * from BUSI_ECONTRACT';
end if;
END ;
执行存储过程,顺利通过。
4. 我的插入语句能够通过,但把它放在存储过程里就不行了,报错为ORA-01031: 权限不足
grant select any catalog to user;
在存储过程中的有些操作需要显式地赋予权限, 即便单独运行是可以的.
5. oracle 创建存储过程部分表编译错误是否表空间、权限不足
你先查看错误是什么啊,好像有个什么show error的吗?
有可能是权限问题,你当前用户需要获得该表的使用权限,你上面列出来的是系统权限,还有对象的权限,你针对哪个对象有什么样的权限,需要授权,同样使用grant 授权,列如:grant select on table to user;记得没错就是这样的。还有就是该用户也要用相应表空间的使用权,这个就是修改用户的定义,指定能使用该表空间吧,没有看参考,提供这些给你参考哈!
6. oracle 在存储过程中用动态sql创建序列为何会遇到权限不足的问题呢
create or replace procere
create sequence
都需要权限。。。
用sysdba给该用户grant一个吧。。
GRANT EXECUTE ANY PROCEDURE TO 普通用户 WITH ADMIN OPTION;
GRANT RESOURCE TO 普通用户; --这个已经包含了序列的权限
7. 创建存储过程 老师出现 ORA-01031: 权限不足
你这个表USER01在system用户下存在吗?
不存在的话是要报错的
用system用户给你的gong用户赋权
grantconnect,resource,dbatogong;
这样应该基本就差不多了
8. ORA-01031: 权限不足
汗~~
GRANT create any table TO scott;
sequence 是序列,你试着给它创建序列的权限有毛用啊,你的存储过程里是要创建表啊。
===============================================
哈,没研究过这么深,只不过这么用久了,就习惯这么用了。遗憾,你可以去查一些存储过程的教程,那上边一般会有这些基础知识。我只是会用而已。
9. 在存储过程中,建立临时表,提示权限不足,请问需要什么权限
创建表的权限赋给用户
oracle 赋权语句,用dba用户执行
grantcreatetabletotest;
10. 错误ora 00900 06512
可能是没有权限。虽然当前用户执行语句是有权限的,但是放到存储过程中就必须要显式的赋个权限给当前用户。以下参考
【IT168 技术文档】我们知道,用户拥有的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 procere 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 procere 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 procere successfully completed
--已经可以执行了。