try->
insert into B(GUID,T1,T2,T3) 
select A序列名.nextval,T1,T2,T3 from A

解决方案 »

  1.   

    2楼错了,try写个SQL函数取序列号,如 F_GetSeq(),sql中写再返回值
    select A序列名.nextval from dual--取序列,写成函数insert into B(GUID,T1,T2,T3) 
    select F_GetSeq(),T1,T2,T3 from A,dual
      

  2.   

    or try->
    select (select A序列名.nextval from dual),T1,T2,T3 from A
      

  3.   

    可用触发器的,插入语句不改
    在表B上建触发器,示例
    create or replace trigger mytable_trig_autoinc
    before insert on mytable
    for each row
    begin
    if (:new.id is null) then
    select mytable_seq.nextval into :new.id from dual;
      end if;
      

  4.   

    你这个是整张表复制的,不需要用游标了
    我试写了一个不要手动创建B表,直接执行这个就可以了
    select IDENTITY(int,1,1) as guid,* into B from A
      

  5.   

    用触发器的写法
    create or replace trigger tableB_trig_autoinc
    before insert on 表B
    for each row
    begin
    if (:new.id is null) then
    select 表B序列名.nextval into :new.id from dual;
      end if;
    end;
      

  6.   

    这是Sqlserver的写法。。oracle的序列不一样
      

  7.   

    第一个字段为自增字段GUID
    -----------
    GUID和自增有什么关系?和序列有什么关系?直接调用sys_guid()函数即可...
      

  8.   

    e...
    都没注意看,直接当成sql在想了...那抱歉了,oracle不熟,而且电脑里也没有 
    帮不了楼主啦
      

  9.   

    ORACLE我不知道行不行,但是SQL里面就简单了,一个SQL语句就搞定了,
    select GUID=identity(int,1,1),* into B from A
    select * from B
    表B里面就有A里面的数据了!
      

  10.   


    估计楼主的意思..就是要一个自增主键,名字刚好叫GUID的...
      

  11.   

    就是14楼的这个意思,在B表上增加一个自增字段,名字随便起都没关系,B表其余字段和数据都和A表的相同
    是ORACLE下的,高手们还有什么办法没有啊
      

  12.   

    好了,已经解决了,是这样的:
    INSERT INTO B(GUID, T1, T2, T3) SELECT B表序列名.NEXTVAL, T1,T2,T3 FROM DUAL, A感谢大家啊!
      

  13.   

    高手别着急,还有个问题:
    这个是可以的:
    INSERT INTO B(GUID, T1, T2, T3) SELECT B表序列名.NEXTVAL, T1,T2,T3 FROM DUAL, A
    但加上条件就不行了,下面这个说不允许序列:
    INSERT INTO B(GUID, T1, T2, T3) SELECT B表序列名.NEXTVAL, T1,T2,T3 FROM DUAL, A where T1='1' ORDER BY T2
    这是怎么回事啊?
     
      

  14.   

    呵呵 看得有点头晕.竟然是建了个GUID的列...你上面的问题set identity_insert on.试试这个,用完以后off.
      

  15.   

    用触发器的写法 
    SQL codecreate or replace trigger tableB_trig_autoinc
    before insert on 表B
    for each row
    begin
    if (:new.id is null) then
    select 表B序列名.nextval into :new.id from dual;
      end if;
    end;
      

  16.   

    用触发器,是直接在ORACLE里面配置的吧?我不太会啊。
    还是用SQL语句来得直接些吧?
      

  17.   

    给你个例子,看下如何设置建立之后并用命令建立两个与之对应的表的触发器,命令如下:
             CREATE OR REPLACE TRIGGER GZJH_ID
    BEFORE INSERT ON GZJH FOR EACH ROW
    BEGIN
    SELECT GZJH_ID.NEXTVAL INTO :NEW.id FROM DUAL;
    END;
             CREATE OR REPLACE TRIGGER SP_ID
    BEFORE INSERT ON GZJH  FOR EACH ROW
    BEGIN
    SELECT SP_ID.NEXTVAL INTO :NEW.id FROM DUAL;
    END;
      

  18.   

    都让你们搞晕了
    1)不加条件全表复制
    INSERT INTO B(GUID, T1, T2, T3) 
         SELECT 序列名.NEXTVAL, T1,T2,T3 FROM A ;2)加上条件
    INSERT INTO B(GUID, T1, T2, T3) 
         SELECT 序列名.NEXTVAL, T1,T2,T3 FROM A where T1='1';
    说明:insert into 采用SQL子句的方式是不能加order by ,你想想,加order by 有意义吗