2013-10-03 36 views
0

我想從DBMS_Redefinition過程的主表中創建臨時表。如何從DBMS_REDEFINITION中的(選擇*)代碼創建臨時表

但要求是不寫整個創建語法,因爲有n個表,我不能每次取每個值。

INTERIM TABLE = table_INTER 
MAIN_TABLE = table_MAIN 

爲例如..

CREATE TABLE table_INTER (
ContactPartKey   NUMBER(20) NOT NULL, 
PartyKey     NUMBER(10) NOT NULL, 
ConParticipationRoleKey NUMBER(10) NOT NULL, 
ChannelKey    NUMBER(10) NOT NULL, 
StateKey     NUMBER(10) NOT NULL, 
StateReasonKey   NUMBER(10) NOT NULL, 
NextStateKey    NUMBER(10) NOT NULL, 
PreviousStateKey   NUMBER(10) NOT NULL, 
QueueKey     NUMBER(10) NOT NULL, 
RtgPointKey    NUMBER(10) NOT NULL, 
ContactPartIndKey   NUMBER(10) NOT NULL, 
DeviceKey     NUMBER(10) NOT NULL, 
ContactID     NUMBER(20) NOT NULL, 
Parent1ContactID   NUMBER(20) , 
StartDateKey    NUMBER(10) NOT NULL, 
EndDateKey    NUMBER(10) NOT NULL, 
StartTimeKey    NUMBER(3) NOT NULL, 
EndTimeKey    NUMBER(3) NOT NULL, 
StartDateTime    DATE  NOT NULL, 
EndDateTime    DATE  NOT NULL, 
StateDur     NUMBER(10) NOT NULL, 
ContactAllocatedCost  decimal(14,4) , 
ContactPartSeqNum   NUMBER(10) NOT NULL, 
ContactInProcessInd  NUMBER(3) NOT NULL, 
FinalPartInd    NUMBER(3) NOT NULL, 
Counter     NUMBER(10) NOT NULL, 
SourceKey     NUMBER(10) NOT NULL, 
StreamKey     NUMBER(10) NOT NULL, 
ProcessKey    NUMBER(10) , 
SelfServiceInd   NUMBER(3) ) 
--PRIMARY KEY(ContactPartKey) 
TABLESPACE AVAYAIQFACT1 
STORAGE (INITIAL 2097152 NEXT 2097152) 
PCTFREE 0 
PARTITION BY RANGE (STARTDATETIME) 
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) 
(PARTITION P1 VALUES LESS THAN (TO_DATE('01/09/2013', 'DD/MM/YYYY')) TABLESPACE T1, 
PARTITION P2 VALUES LESS THAN (TO_DATE('01/10/2013', 'DD/MM/YYYY')) TABLESPACE T1); 

在上述語法中,列名值不能被給予每一次。所以我做的是

create table table_INTER as (select * from table_MAIN); 

但誰能告訴我如何在此臨時表(table_INTER)中引入分區。

回答

0

你可以試試嗎?

CREATE TABLE TABLE_INTER 
PARTITION BY RANGE (STARTDATETIME) 
    INTERVAL (NUMTOYMINTERVAL (1, 
          'MONTH')) 
    (PARTITION P1 
      VALUES LESS THAN 
       (TO_DATE ('01/09/2013', 
         'DD/MM/YYYY')) 
      TABLESPACE T1, 
     PARTITION P2 
      VALUES LESS THAN 
       (TO_DATE ('01/10/2013', 
         'DD/MM/YYYY')) 
      TABLESPACE T1) 
AS 
    (SELECT * FROM TABLE_MAIN);