更改新列时,在oracle过程中插入sql

时间:2016-02-18 02:24:25

标签: oracle plsql

表1:

create table table1(n number);

表2:

creaet table table2(n number);

过程:

create or replace procedure myPro is
begin
  insert into table1(n) 
    select n from table2;
  commit;
end myPro;

现在

alter table table1 add newclounm number;
alter table table2 add newclounm number;

如何重构我的程序? 我没有使用insert into table1 select * from table2;

我尝试table1%rowtype,但返回错误;

2 个答案:

答案 0 :(得分:0)

您好试试这段代码

python2.7

如果您的数据量很高,则需要使用limit子句......

答案 1 :(得分:0)

  

在我的脑海中,我可以认为它可以通过帮助轻松完成   使用ALL_TAB_COLUMNS表的动态SQL。但这个设计不在   所有推荐。我假设了   两个表中的列名相同。希望在片段下方有所帮助。

CREATE OR REPLACE PROCEDURE myPro
    IS
      lv_cols LONG;
    BEGIN
      SELECT WMSYS.WM_CONCAT(COLUMN_NAME)
      INTO lv_cols
      FROM ALL_TAB_COLUMNS
      WHERE OWNER    = 'SCHEMA_NAME'
      AND TABLE_NAME = 'TABLE1'
      GROUP BY TABLE_NAME;
      EXECUTE IMMEDIATE 'INSERT INTO TABLE1('||lv_cols||')'|| 'SELECT '||lv_cols||' FROM TABLE2';
      COMMIT;
    END ;