sql >> データベース >  >> RDS >> Oracle

Oracleスキーマのユーザーにすべての権限を付与する

    ループでそれを実行し、動的SQLによって付与できます:

    BEGIN
       FOR objects IN
       (
             SELECT 'GRANT ALL ON "'||owner||'"."'||object_name||'" TO MyUser' grantSQL
               FROM all_objects
              WHERE owner = 'MY_SCHEMA'
                AND object_type NOT IN
                    (
                       --Ungrantable objects.  Your schema may have more.
                       'SYNONYM', 'INDEX', 'INDEX PARTITION', 'DATABASE LINK',
                       'LOB', 'TABLE PARTITION', 'TRIGGER'
                    )
           ORDER BY object_type, object_name
       ) LOOP
          BEGIN
             EXECUTE IMMEDIATE objects.grantSQL;
          EXCEPTION WHEN OTHERS THEN
             --Ignore ORA-04063: view "X.Y" has errors.
             --(You could potentially workaround this by creating an empty view,
             -- granting access to it, and then recreat the original view.) 
             IF SQLCODE IN (-4063) THEN
                NULL;
             --Raise exception along with the statement that failed.
             ELSE
                raise_application_error(-20000, 'Problem with this statement: ' ||
                   objects.grantSQL || CHR(10) || SQLERRM);
             END IF;
          END;
       END LOOP;
    END;
    /
    


    1. mysql_fetch_arrayは1行のみを返します

    2. PostgreSQLのイベントスケジューラ?

    3. 行をデフォルトの列値に戻すmysql

    4. 再宣言せずにPHPファイル間でデータベース接続インスタンスを渡す方法