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

Làm thế nào để loại bỏ các phân vùng từ các bảng trên nhiều lược đồ?

Sử dụng DBA_TAB_PARTITIONS hoặc ALL_TAB_PARTITIONS lượt xem thay vì USER_TAB_PARTITIONS . Hai chế độ xem trước chứa TABLE_OWNER (tức là lược đồ) sẽ giúp bạn hoàn thành mục tiêu của mình.

Sau đó, bạn có thể tham số hóa thủ tục của mình để lấy tên chủ sở hữu và tên bảng làm tham số:

PROCEDURE purge_ops_log_range_parts(pinOwner      IN VARCHAR2,
                                    pinTable_name IN VARCHAR2)
IS
BEGIN
  FOR partition_rec IN (SELECT partition_name
                              ,high_value
                          FROM DBA_TAB_PARTITIONS
                         WHERE TABLE_OWNER = pinOwner AND
                               table_name = pinTable_name)
  LOOP
     IF SYSDATE >= add_months(to_date(substr(partition_rec.high_value
                                            ,12
                                            ,19)
                                     ,'YYYY-MM-DD HH24:MI:SS')
                             ,6)
     THEN
        execute_immediate('ALTER TABLE ' || pinOwner || '.' ||
                             pinTable_name || ' DROP PARTITION ' ||
                             partition_rec.partition_name);
     END IF;
  END LOOP;
END purge_ops_log_range_parts;

Chúc may mắn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:DÀI hay CLOB?

  2. Tại sao tôi không thể cập nhật nhiều cột cùng một lúc bằng từ khóa With?

  3. ORA-19011:Bộ đệm chuỗi ký tự quá nhỏ

  4. Giá trị mặc định cho paramteters không được thông qua tập lệnh SQLPlus

  5. Chèn nhiều hàng từ Khung dữ liệu R vào Cơ sở dữ liệu Oracle