【问题标题】:Grant a user select, insert, update, delete to a specfic schema授予用户对特定架构的选择、插入、更新、删除权限
【发布时间】:2017-03-14 17:01:55
【问题描述】:

我想授予我已创建权限的用户:在特定架构上选择、插入、更新、删除。

我是否需要在架构中才能做到这一点? (alter session set current_schema='my_schema';)

提前致谢

【问题讨论】:

    标签: oracle


    【解决方案1】:

    用户经常要求一个语句在一个步骤中授予权限。

    对于所有表都没有 GRANT SELECT 有多种解决方法

    FOR x IN (SELECT * FROM user_tables)
    LOOP   
      EXECUTE IMMEDIATE 'GRANT SELECT ON ' || x.table_name || ' TO <<someone>>'; 
    END LOOP;
    

    declare
    cursor c1 is select table_name from user_tables;
    cmd varchar2(200);
    begin
    for c in c1 loop
    cmd := 'GRANT SELECT ON '||c.table_name|| <<TO YOURUSERNAME>>;
    execute immediate cmd;
    end loop;
    end;
    

    Oracle 可以实现架构级授权

    GRANT SELECT ON <schema name> to <<user>>
    

    【讨论】:

    • 感谢您的快速回复,但我是否需要使用“alter session set current_schema”更改架构才能执行此操作?
    • exec for i in (select table_name from user_tables) loop execute immediate 'grant select,insert,update,delete on '||i.table_name||'到多多';结束循环;我收到错误 ORA-00942。有什么想法吗?
    • 它会导致该错误,因为您尝试执行的 SQL 语句引用的表或视图要么不存在,要么您无权访问,要么属于另一个模式,而您没有t 通过模式名称引用表。
    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2020-10-23
    • 1970-01-01
    • 2017-10-10
    • 2023-03-14
    相关资源
    最近更新 更多