Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

दिनांक के आधार पर एकाधिक अंतराल विभाजन कैसे छोड़ें?

आप इस तरह PL/SQL का उपयोग कर सकते हैं।

DECLARE
    CANNOT_DROP_LAST_PARTITION EXCEPTION;
    PRAGMA EXCEPTION_INIT(CANNOT_DROP_LAST_PARTITION, -14758);

   ts TIMESTAMP;
BEGIN
   FOR aPart IN (SELECT PARTITION_NAME, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'MY_TABLE') LOOP
      EXECUTE IMMEDIATE 'BEGIN :ret := '||aPart.HIGH_VALUE||'; END;' USING OUT ts;
      IF ts < SYSTIMESTAMP - INTERVAL '15' DAY THEN
      BEGIN
         EXECUTE IMMEDIATE 'ALTER TABLE MY_TABLE DROP PARTITION '||aPart.PARTITION_NAME|| ' UPDATE GLOBAL INDEXES';
      EXCEPTION
            WHEN CANNOT_DROP_LAST_PARTITION THEN
                EXECUTE IMMEDIATE 'ALTER TABLE MY_TABLE SET INTERVAL ()';
                EXECUTE IMMEDIATE 'ALTER TABLE MY_TABLE DROP PARTITION '||aPart.PARTITION_NAME;
                EXECUTE IMMEDIATE 'ALTER TABLE MY_TABLE SET INTERVAL( INTERVAL ''1'' DAY )';            
      END;
      END IF;
   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. ओरेकल पर गिनती क्वेरी के लिए स्प्रिंग हाइबरनेट टेम्पलेट निष्पादन विधि किस ऑब्जेक्ट प्रकार पर वापस आती है?

  2. .पैच_स्टोरेज

  3. Oracle में RTRIM () फ़ंक्शन

  4. Oracle sql डेवलपर का उपयोग करके एक डेटाबेस से दूसरे डेटाबेस में कॉपी करें - कनेक्शन विफल

  5. Oracle SQL डेवलपर पर एक ही समय में 2 प्रश्न चलाएँ?