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

前端之家收集整理的这篇文章主要介绍了在Oracle模式上授予用户所有权限前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在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;
/

猜你在找的Oracle相关文章