日期:2014-05-17  浏览次数:21185 次

关于create table as 的问题,如何加一个integer型的字段
我有一个表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要加权限才行

------解决方案--------------------
INTEGER是ANSI Datatypes,在Oracle中会自动转换为NUMBER型的
------解决方案--------------------
SQL code

通过一个过渡表就可以,方法如下(如果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;

------解决方案--------------------
楼上的方法巧妙, 学习了.