可以,在Oracle中有Procdure和function两种函数过程可以解决,在其中可用缓存把数据取出来随便加工均可!

解决方案 »

  1.   

    d可由rownum代替.inser into b select a,b,c,rownum from a;
      

  2.   

    直接得sql语句就可以了吧,select * into B from A ,然后再加自动序列
      

  3.   

    能详细介绍一下Procedure 和 function么?
      

  4.   

    d是个sequence,如果直接select rownum,以后序列是不是对应不上了?
      

  5.   

    首先创建序列
    CREATE SEQUENCE id_seq INCREMENT BY 1 START WITH 1 
        MAXVALUE 1.0E28 MINVALUE 1 CYCLE 
        NOCACHE NOORDER;
    再创创建过程
    CREATE OR REPLACE PROCEDURE AddNew(
      p_a      A.a%TYPE,
      p_b      A.b%TYPE,
      p_c      A.b%TYPE) AS
    BEGIN
      -- Insert a new row in the students table. 
      
      
      INSERT INTO students (a, b, c,d)
        VALUES ( p_a, p_b,
                p_c, id_seq.nextval);
    END AddNew;
    /
      

  6.   

    1.先创建序列USERID  用户序列号
    --
    CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1 
        MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE 
        NOCACHE NOORDER2.创建触发器USERADD 会员触发器
    --
    CREATE OR REPLACE TRIGGER USERADD
    BEFORE INSERT ON MEMBERRG
    FOR EACH ROW
    BEGIN
        USERID.NEXTVAL INTO :NEW.NUM FROM DUAL;
    END;3.创建新表B
    create table B (select A.a,A.b,A.c from A);
    alter table B add d number(12);
    4.插入数据
    MERGE INTO B B1
    USING A A1
    ON (B1.a=A1.a)    /* 假定是主键*/
    WHEN MATCHED THEN
    UPDATE SET
    B1.a=A1.a,
    B1.b=A1.B,
    B1.c=A1.c
    B1.d=SEQUENCE
    WHEN NOT MATCHED THEN
    INSERT VALUES(A1.a,A1.b,A1.c,SEQUENCE);
      

  7.   

    sorry,改为b表INSERT INTO b(a, b, c,d)
        VALUES ( p_a, p_b,p_c, id_seq.nextval);
      

  8.   

    1.先创建序列USERID  用户序列号
    --
    CREATE SEQUENCE D INCREMENT BY 1 START WITH 1 
        MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE 
        NOCACHE NOORDER2.创建触发器USERADD 会员触发器
    --
    CREATE OR REPLACE TRIGGER D
    BEFORE INSERT ON MEMBERRG
    FOR EACH ROW
    BEGIN
        USERID.NEXTVAL INTO :NEW.NUM FROM DUAL;
    END;3.创建新表B
    create table B (select A.a,A.b,A.c from A);
    alter table B add d number(12);
    4.插入数据
    MERGE INTO B B1
    USING A A1
    ON (B1.a=A1.a)    /* 假定是主键*/
    WHEN MATCHED THEN
    UPDATE SET
    B1.a=A1.a,
    B1.b=A1.B,
    B1.c=A1.c
    B1.d=nextval
    WHEN NOT MATCHED THEN
    INSERT VALUES(A1.a,A1.b,A1.c,D.nextval);
      

  9.   

    好象我的方法更加的麻烦哦
    beckhambobo(beckham)的比较简单
      

  10.   

    用游标实现表的插入也可以declare
    cursor c_sor is
    select * from a;
    begin
    for v_sor in c_sor loop
    insert into b values(v_sor.a,v_sor.b,v_sor.c,id_seq.nextval);
    end loop;
    commit;
    end;
      

  11.   

    create table b as
    select a,b,c,rownum id from a
      

  12.   

    直接create ...as...后b表可能会没有主键
    不如直接创建b表,然后
    insert into b select a.a,a.b,a.c,seq_id from a