我有一个表T1,想另建一个表T2同T1结构一样(不要数据),但加一个integer字段f1
create table t2 as
select a.*,1 as f1 from t1 a where 1=0
但这样建出来的t2的类型是number类型,不知如何才能让它是integer类型呢,不能用alter,因为我是用execute immediate来运行的,用alter要加权限才行

解决方案 »

  1.   

    INTEGER是ANSI Datatypes,在Oracle中会自动转换为NUMBER型的
      

  2.   


    通过一个过渡表就可以,方法如下(如果t1表自己就有int类型的列的话,就可以不用过渡表):
    CREATE TABLE c(a INT); 
    CREATE TABLE t2 AS SELECT t1.*,c.a f1
     FROM t1,c WHERE 1=0;
    --如果t1自己有int列的情况:
    CREATE TABLE t2 AS SELECT t1.*,t1.int列 f1
     FROM t1 WHERE 1=0;