表已经都建好了,但是后来的需求需要在多个表中添加一个相同的列,多多指教。求解。

解决方案 »

  1.   

    --简单点就用sql语句,你只要把下面查询语句的结果执行就可以了
    select 'alter table '||table_name||' add (col varchar2(200)) ;'from all_tables
    where owner='SCOTT'alter table DEPT add (col varchar2(200)) ;
    alter table EMP add (col varchar2(200)) ;
    alter table BONUS add (col varchar2(200)) ;
    alter table A add (col varchar2(200)) ;
      

  2.   

    什么意思?
    直接alter table table_name add newcol varchar2(10) not null 
    不行吗?
      

  3.   

    --用sql语句来执行sql语句 (sqlplus里执行)
    scott@YPCOST> set echo off;
    scott@YPCOST> set heading off;
    scott@YPCOST> set feedback off;
    scott@YPCOST> spool test.sql;
    scott@YPCOST> select 'alter table '||table_name||' add (col varchar2(200)) ;'from all_tables
      2  where owner='SCOTT';alter table DEPT add (col varchar2(200)) ;
    alter table EMP add (col varchar2(200)) ;
    alter table BONUS add (col varchar2(200)) ;
    alter table A add (col varchar2(200)) ;
    scott@YPCOST> spool off;
    scott@YPCOST> ed test.sql; --这个时候会有个记事本,你把头部去掉,把尾部去掉就 保存就可以了
    /*记事本里的内容
    scott@YPCOST> select 'alter table '||table_name||' add (col varchar2(200)) ;'from all_tables
      2  where owner='SCOTT';alter table DEPT add (col varchar2(200)) ;
    alter table EMP add (col varchar2(200)) ;
    alter table BONUS add (col varchar2(200)) ;
    alter table A add (col varchar2(200)) ;scott@YPCOST> spool off;*/scott@YPCOST> start test.sql --这个就是执行记事本里的语句
      

  4.   

    begin
    for i in(select table_name from user_tables) loop
    execute immediate 'alter table '||i.table_name||' add col_name 数据类型(长度)';
    end;