Grant Select on all Tables Owned By Specific User

后端 未结 4 1163
春和景丽
春和景丽 2020-12-02 16:55

I need to grant select permission for all tables owned by a specific user to another user. Can I do this with a single command along the lines of:

Grant Sel         


        
4条回答
  •  爱一瞬间的悲伤
    2020-12-02 17:20

    tables + views + error reporting

    SET SERVEROUT ON
    DECLARE
      o_type VARCHAR2(60) := '';
      o_name VARCHAR2(60) := '';
      o_owner VARCHAR2(60) := '';
      l_error_message VARCHAR2(500) := '';
    BEGIN
      FOR R IN (SELECT owner, object_type, object_name
                FROM all_objects 
                WHERE owner='SCHEMANAME'
                AND object_type IN ('TABLE','VIEW')
                ORDER BY 1,2,3) LOOP
        BEGIN
        o_type := r.object_type;
        o_owner := r.owner;
        o_name := r.object_name;
        DBMS_OUTPUT.PUT_LINE(o_type||' '||o_owner||'.'||o_name);
        EXECUTE IMMEDIATE 'grant select on '||o_owner||'.'||o_name||' to USERNAME';
        EXCEPTION
          WHEN OTHERS THEN
            l_error_message := sqlerrm;
            DBMS_OUTPUT.PUT_LINE('Error with '||o_type||' '||o_owner||'.'||o_name||': '|| l_error_message);
            CONTINUE;
        END;
      END LOOP;
    END;
    /
    

提交回复
热议问题