2011-06-01 20 views

回答

8

使用数据字典视图dba_tables中(分别为ALL_TABLES,如果您不能访问DBA_TABLES):

declare 
    l_SQL varchar2(4000); 
begin 
    for cur in (
    select * from dba_tables where tablespace_name = 'mytablespace') 
    loop 
    l_sql := 'grant select, insert, update on ' || cur.owner || '.' || cur.table_name || ' to myuser'; 
    --dbms_output.put_line(l_SQL || ';'); 
    execute immediate l_SQL; 
    end loop; 
end; 

如果你只是想生成一个脚本,注释掉立即执行并取消注释dbms_output。

+1

谢谢你,那是我的工作。 – 2011-06-01 08:58:41

10

USE OF TABLESPACE不是记录的选项,您是从哪里找到的?

你可以做到这一点,以允许用户在一个表空间中创建对象:

alter user username quota [amount] on mytablespace; 

授予SELECT,INSERT,UPDATE和对象删除,你必须为每个表单独运行grant命令:

grant select, insert, update, delete on mytable1 to username; 
....