sql >> Databáze >  >> RDS >> Oracle

Existuje způsob, jak dynamicky vytvořit tabulku a některé počáteční oddíly?

Můžete to zkusit s nějakým dynamickým SQL vytvořením příkazu SQL založeného na sysdate:

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. Ukládání IP adresy do databáze MySQL (IPv4 A IPv6)

  2. Konverze se nezdařila při převodu hodnoty varchar „moje vrácená hodnota“ na datový typ int

  3. Entity Framework Core count nemá optimální výkon

  4. aktualizovat seznam uživatelů ve skupině:UPDATE nebo DELETE + INSERT