存储过程中创建表和视图权限问题

[复制链接]
查看11 | 回复3 | 2013-2-21 09:06:42 | 显示全部楼层 |阅读模式
oraclce version:9.2.0
我创建了一个新用户,并给用户授权CONNECT,RESOURCE,后来运行存储过程A,该存储过程中调用创建表的存储过程B和创建视图的存储过程,运行出错,报没有足够权限,后来单独运行
grant create table,create view to user;
就可以执行了
问题:
connect,resource 角色包括了create table,create view权限(如下),为什么报权限不够,单独加上这两个权限就可以了?

SQL> L
1* select * from role_sys_privs where role in ('RESOURCE','CONNECT')
SQL> /
ROLE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
CONNECT CREATE VIEW NO
CONNECT CREATE TABLE NO
CONNECT ALTER SESSION NO
CONNECT CREATE CLUSTER NO
CONNECT CREATE SESSION NO
CONNECT CREATE SYNONYM NO
CONNECT CREATE SEQUENCE NO
CONNECT CREATE DATABASE LINK NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE TABLE NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE INDEXTYPE NO
RESOURCE CREATE PROCEDURE NO
回复

使用道具 举报

千问 | 2013-2-21 09:06:42 | 显示全部楼层
你必须赋值权限给该用户,而不是通过角色传递,否则执行的时候会报错,这个问题相信做开发的都碰到过,不知道是不是oracle的一个bug
回复

使用道具 举报

千问 | 2013-2-21 09:06:42 | 显示全部楼层
好老的帖子了,不过最近做东西也碰到了~
存储过程不能通过角色获得权限,必须给用户显示的授权,或者oracle也提供了在过程中使用role权限的方法,在创建过程是可以在is/as前面加AUTHID CURRENT_USER就OK啦~
回复

使用道具 举报

千问 | 2013-2-21 09:06:42 | 显示全部楼层
星空下wjr 发表于 2012-11-18 18:37
好老的帖子了,不过最近做东西也碰到了~
存储过程不能通过角色获得权限,必须给用户显示的授权,或者oracl ...

procedure 不能使用role,第一次知道,呵呵!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行