加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

在Oracle模式上授予用户所有权限

发布时间:2021-02-04 18:19:26 所属栏目:站长百科 来源:网络整理
导读:有没有办法在Oracle模式上为用户授予所有权限?我尝试了以下命令,但它只授予模式中特定表的权限.我想要的是为该用户授予给定模式的所有权限. GRANT ALL ON MyTable TO MyUser; 解决方法 您可以在循环中执行此操作并通过动态SQL进行授予: BEGIN FOR objects

有没有办法在Oracle模式上为用户授予所有权限?我尝试了以下命令,但它只授予模式中特定表的权限.我想要的是为该用户授予给定模式的所有权限.

GRANT ALL ON MyTable TO MyUser;

解决方法

您可以在循环中执行此操作并通过动态SQL进行授予:

BEGIN
   FOR objects IN
   (
         SELECT 'GRANT ALL ON "'||owner||'"."'||object_name||'" TO MyUser' grantSQL
           FROM all_objects
          WHERE owner = 'MY_SCHEMA'
            AND object_type NOT IN
                (
                   --Ungrantable objects.  Your schema may have more.
                   'SYNONYM','INDEX','INDEX PARTITION','DATABASE LINK','LOB','TABLE PARTITION','TRIGGER'
                )
       ORDER BY object_type,object_name
   ) LOOP
      BEGIN
         EXECUTE IMMEDIATE objects.grantSQL;
      EXCEPTION WHEN OTHERS THEN
         --Ignore ORA-04063: view "X.Y" has errors.
         --(You could potentially workaround this by creating an empty view,-- granting access to it,and then recreat the original view.) 
         IF SQLCODE IN (-4063) THEN
            NULL;
         --Raise exception along with the statement that failed.
         ELSE
            raise_application_error(-20000,'Problem with this statement: ' ||
               objects.grantSQL || CHR(10) || SQLERRM);
         END IF;
      END;
   END LOOP;
END;
/

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读