sql >> Databáze >  >> RDS >> Oracle

Správný způsob, jak uživatelům poskytnout přístup k dalším schématům v Oracle

AFAIK musíte udělat grantový objekt jeden po druhém.

Obvykle byste k tomu použili skript, něco ve smyslu:

SELECT 'GRANT ALL ON '||table_name||' TO BOB;'
FROM   ALL_TABLES
WHERE  OWNER = 'ALICE';

A podobně pro ostatní db objekty.

Do každého schématu byste mohli vložit balíček, který potřebujete k vydání povolení, ze kterého projde všechna volání každého příkazu GRANT prostřednictvím příkazu EXECUTE IMMEDIATE.

např.

   PROCEDURE GRANT_TABLES
   IS
   BEGIN

      FOR tab IN (SELECT table_name
                  FROM   all_tables
                  WHERE  owner = this_user) LOOP
         EXECUTE IMMEDIATE 'GRANT SELECT, INSERT, UPDATE, DELETE ON '||tab.table_name||' TO other_user';
      END LOOP;
   END;


  1. Čtení clob řádek po řádku pomocí pl\sql

  2. localhost vs. 127.0.0.1 v mysql_connect()

  3. Odečtěte hodiny od funkce now().

  4. SQL příkaz INSERT funguje, ale data se nezobrazují v tabulce