存储过程中drop 其他用户表,权限不足,why

yanleigis 2003-02-25 02:33:25
create or replace procedure ppptest(tab_Name in varchar2) is
begin
delete from sde.layers where Upper(table_name)=upper(tab_name);
end ;
Error: PL/SQL: ORA-01031: 权限不足
查看权限,角色如下,
SQL> select * from USER_ROLE_PRIVS;

USERNAME GRANTED_ROLE ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
DLCC CONNECT NO YES NO
DLCC DBA YES YES NO

SQL>
SQL> select * from user_sys_privs;

USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
DLCC CREATE VIEW NO
DLCC CREATE TABLE NO
DLCC DROP ANY VIEW YES
DLCC DROP ANY INDEX YES
DLCC DROP ANY TABLE YES
DLCC CREATE ANY VIEW NO
DLCC CREATE ANY TABLE NO
DLCC UNLIMITED TABLESPACE YES
...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowy_howe 2003-02-25
  • 打赏
  • 举报
回复
奇怪,我用两个DBA用户测试是可以的啊。
DLCC是DBA用户,不用对他再赋予delete等权限,只要加上用户名.表名,应该就可以删除了。

我的测试内容:
1、建立用户test test1。分别赋予dba,connect权限。
2、在test中建立表ttt,并insert一个值。
3、对test1用户赋予create any table和drop any table权限。(我想其实不用这一步也可以)
4、以test1用户连接后,执行delete from test.ttt,成功。
5、执行insert成功。
6、执行过程ppptest成功。

我这就不清楚楼主的为什么不行了。
klyh 2003-02-25
  • 打赏
  • 举报
回复

你的DLCC用户有对sde用户删除权限吗?
bzszp 2003-02-25
  • 打赏
  • 举报
回复
用用户sde登陆
grant delete on layers to dlcc;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧