Thứ Ba, 3 tháng 7, 2018

[ORACLE PL/SQL] Grant select on schemas to user.

DECLARE
   TYPE T_V_SCHEMA IS TABLE OF VARCHAR2 (20);
   V_SCHEMA   T_V_SCHEMA;
   V_USER VARCHAR2(20);
BEGIN
   V_SCHEMA := T_V_SCHEMA ('xxx','yyy');          --Input Schema Name
   V_USER := 'zzz';
   FOR L_V_SCHEMA IN 1 .. V_SCHEMA.COUNT             --Loop schema in the list
   LOOP
       
      FOR L_V_TABLE IN (SELECT TABLE_NAME                     --Grant select on Table to the User
                          FROM DBA_TABLES
                         WHERE OWNER = V_SCHEMA (L_V_SCHEMA))
      LOOP
                              EXECUTE IMMEDIATE  'grant select on '
                                 || V_SCHEMA (L_V_SCHEMA)
                                 || '.'
                                 || L_V_TABLE.TABLE_NAME
|| ' to '
|| V_USER;

      END LOOP L_V_TABLE;
   END LOOP;
END;
/

Không có nhận xét nào: