Berikan Pilih pada semua Tabel yang Dimiliki Oleh Pengguna Tertentu

Saya perlu memberikan izin pilih untuk semua tabel yang dimiliki oleh pengguna tertentu kepada pengguna lain. Dapatkah saya melakukan hal ini dengan satu perintah seperti di bawah ini:

Grant Select on OwningUser.* to ReceivingUser

Atau apakah saya harus membuat sql untuk setiap tabel dengan perintah seperti di bawah ini:

 Select 'GRANT SELECT ON OwningUser.'||Table_Name||'TO ReceivingUser' 
 From All_Tables Where Owner='OWNINGUSER'
Larutan

Yah, ini bukan pernyataan tunggal, tetapi ini hampir sedekat yang bisa Anda dapatkan dengan oracle:

BEGIN
   FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner='TheOwner') LOOP
      EXECUTE IMMEDIATE 'grant select on '||R.owner||'.'||R.table_name||' to TheUser';
   END LOOP;
END; 
Komentar (2)

tabel + tampilan + pelaporan kesalahan

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;
/
Komentar (0)

ya, mungkin saja, jalankan perintah ini:

katakanlah Anda memiliki pengguna bernama thoko

grant select any table, insert any table, delete any table, update any table to thoko;

catatan: bekerja pada basis data oracle

Komentar (1)