Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cấp tất cả các đặc quyền cho người dùng trên lược đồ Oracle

Bạn có thể làm điều đó trong một vòng lặp và cấp bằng SQL động:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phân tích cú pháp tên bảng từ một loạt câu lệnh SQL

  2. Xóa các bản ghi trùng lặp bằng rownum trong sql

  3. Groovy Oracle được lưu trữ Proc - chỉ mục cột ẩn

  4. Truy vấn để tính cả SUM tích lũy và tổng số tiền lương

  5. Làm cách nào để thay đổi ngôn ngữ Oracle Exceptions trong .Net / C #?