还要增加以下权限 grant create any table,create any view to user;
据估计原因: 要确定“建表的存储过程B和创建视图的存储过程”中所有引用的表要显式的授于查询权限 即:grant select on usera.table to userb
现在你所登录的用户应该当初是隐式地赋了权限(由其他相同权限的用户来创建这个用户),存储过程里动态SQL建表需要有create table权限,这就需要显示地赋权,像:grant create table,create view to user;
创建对象的系统权限都是要赋的,但一般通过给用户 授予resource角色就行了,它包含创建各种基本对象的权限 sql>grant connect,resource,unlimited tablespace to myuser;
上面的答复没有解释为什么已经有建表权限了,还要再执行grant create table to user? 原来的建表权限是DBA用户执行grant connect,resource to user; 请高手解释一下。给分哦。
SQL> select * from sys.role_sys_privs;ROLE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- RESOURCE CREATE TRIGGER NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TYPE NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE CLUSTER NO CONNECT CREATE SESSION NO RESOURCE CREATE OPERATOR NO RESOURCE CREATE INDEXTYPE NO RESOURCE CREATE TABLE NO已选择9行。 权限有了。
grant create any table,create any view to user;
要确定“建表的存储过程B和创建视图的存储过程”中所有引用的表要显式的授于查询权限
即:grant select on usera.table to userb
授予resource角色就行了,它包含创建各种基本对象的权限
sql>grant connect,resource,unlimited tablespace to myuser;
原来的建表权限是DBA用户执行grant connect,resource to user;
请高手解释一下。给分哦。
------------------------------ ---------------------------------------- ---
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE CLUSTER NO
CONNECT CREATE SESSION NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE INDEXTYPE NO
RESOURCE CREATE TABLE NO已选择9行。
权限有了。