用FUNCTION

CREATE OR REPLACE FUNCTION BACKUP_TABLE
RETURN NUMBER AUTHID CURRENT_USER
IS
    V_BKSTR    VARCHAR(200)='';
    V_CRIND    VARCHAR(1000)='';
BEGIN
    V_BKSTR:=V_BKSTR || 'create table u_item_backup as select * from u_item ';    V_CRIND:=V_CRIND || ' CREATE INDEX u_item_backup';
    V_CRIND:=V_CRIND || ' ON u_item_backup(I_NO,I_CARPLATE,I_VCENTREID) ';
    
    TRY
        EXECUTE IMMEDIATE V_BKSTR;        EXECUTE IMMEDIATE V_CRIND;
    
        RETURN 0;    EXCEPTION
WHEN OTHERS THEN
RETURN 1;
END BACKUP_TABLE;

解决方案 »

  1.   

    CREATE OR REPLACE FUNCTION BACKUP_TABLE
    RETURN NUMBER AUTHID CURRENT_USER
    IS
        V_BKSTR    VARCHAR(200)='';
        V_CRIND    VARCHAR(1000)='';
    BEGIN
        V_BKSTR:=V_BKSTR || 'create table u_item_backup as select * from u_item ';    V_CRIND:=V_CRIND || ' CREATE INDEX u_item_backup';
        V_CRIND:=V_CRIND || ' ON u_item_backup(...你所要用到的列名...) ';
        
        TRY
            EXECUTE IMMEDIATE V_BKSTR;        EXECUTE IMMEDIATE V_CRIND;
        
            RETURN 0;    EXCEPTION
    WHEN OTHERS THEN
    RETURN 1;
    END BACKUP_TABLE;
      

  2.   

    表的约束是不可以复制的
    你可以再复制表以后
    然后再添加约束
    alter table  表名 add primary key(列名);