想一次性把scott的所有对象(表、过程、函数、序列、触发器等)的所有权限分配给test用户,不用oem工具,能做到吗?
用grant all on scott.EMP to test;这样只能一次性分配一个表的权限给test,scott可是还有很多对象哦,有什么办法一次把scott所有对象的权限分配给test?

解决方案 »

  1.   

    自己写个脚本查询 user_objects 视图,将赋权语句拼出来,然后查询结果粘贴出来执行以下就行了。
    手里没有oracle环境,只举个大致的例子
    SELECT 'grant ' || CASE OBJECT_TYPE WHEN 'TABLE' THEN 'all on '  
                                        WHEN 'PROCEDURE' THEN 'EXECUTE ON '
                                        END
                    || OBJECT_NAME||' to test;'
      FROM USER_OBJECTS;
      

  2.   

    写一条SQL命令肯定是做不到了。可以考虑写一个存储过程来完成。就是查询到分配给SCOTT的所有对象权限,然后将相应的对象权限分配给用户Test,这需要在PL/SQL中执行动态SQL。