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

क्या तालिका और कुछ प्रारंभिक विभाजन गतिशील रूप से बनाने का कोई तरीका है?

आप sysdate पर आधारित SQL कथन बनाकर कुछ गतिशील SQL के साथ प्रयास कर सकते हैं:

declare
    vSQL            varchar2(32767);
    vPartitions     varchar2(32767);
begin
    select listagg('PARTITION TABLE_NAME_' || to_char(sysdate + level/24, 'yyyymmddhh24') ||
                   ' VALUES LESS THAN (TIMESTAMP''' || to_char(sysdate + (level+1)/24, 'yyyy-mm-dd hh24') || ':00:00'')'
                   , ', ') within group (order by level) 
    into vPartitions
    from dual
    connect by level <= 24;
    --
    vSQL := q'[ CREATE TABLE TABLE_NAME
                (
                  CODE1             NUMBER(9)           DEFAULT ( 0 ),
                  CODE2             NUMBER(9)           DEFAULT ( 0 ),
                  CODE3             VARCHAR2(50 BYTE)   DEFAULT ( ' ' ),
                  VELOCITY          NUMBER(10,3)        DEFAULT ( 0 ),
                  REALDATE          TIMESTAMP(6),
                  LOCATION          NUMBER(7,3)         DEFAULT ( 0 ),
                  VALIDLOCATION     NUMBER(1)           DEFAULT ( 0 ),
                  STARTTIME         NUMBER(9)           DEFAULT ( 0 ),
                  OUTBOUND          NUMBER(1)           DEFAULT ( 0 ),
                  SERVICE_NAME      VARCHAR2(20 BYTE)   DEFAULT ( ' ' ),
                  LOCATIONCODE      NUMBER(3)           DEFAULT 0,
                  STARTDATE         TIMESTAMP(6),
                  CODE4             VARCHAR2(1 BYTE)
                )
                NOCOMPRESS 
                TABLESPACE TABLESPACE_NAME
                PCTUSED    40
                PCTFREE    10
                INITRANS   1
                MAXTRANS   255
                STORAGE    (
                            BUFFER_POOL      DEFAULT
                           )
                PARTITION BY RANGE (REALDATE)
                (]' || vPartitions ||
                ' )
                NOCACHE
                NOPARALLEL
                MONITORING';    
    execute immediate 'DROP TABLE TABLE_NAME CASCADE CONSTRAINTS'; 
    execute immediate vSQL;
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. ORACLE 10g :To_date() मान्य माह नहीं है

  2. किसी कनेक्टेड उपयोगकर्ता को Oracle 10g डेटाबेस स्कीमा से हटाना

  3. दो बाएं बाहरी जुड़ें Oracle sql काम नहीं कर रहे हैं

  4. oracle में CONNECT-BY क्वेरी से डुप्लिकेट सबट्री हटाना

  5. पासवर्ड में @ साइन के साथ Oracle कनेक्शन स्ट्रिंग