我现在有两个表,A和B,两个表的结构完全一样,现在创建游标检索A表的记录,然后遍历A表的
游标,取得每条记录进行判断,判断有错误的记录要整条插入到B表中,我想问一下,在A表游标
遍历的过程中能否把整条记录都插入到B表中。不用insert in b(每个项目)values(A游标的每个项目)
这种方法,有没有简单的能够整条写入的?insert

解决方案 »

  1.   

    FOR VARSTR IN (SELECT * FROM A)LOOP
        IF VARSTR.某个字段 判断是否有误 THEN 
             INSERT INTO B
             SELECT * FROM A WHERE A.主键 = VARSTR.主键 ;
        END IF;
    END LOOP;如果你的判断能够在SQL语句的WHERE中添加的话:
    INSERT INTO B SELECT * FROM A WHERE A.判断 = 判断值
    就不用在去循环了!
      

  2.   

    你看下我最近的一个开发中的一段代码,你应该就会了
    Cursor c_link_instance(input_route_id Varchar2) Is
          Select sri.*  From srv_instance sri Where sri.delete_state='0' And sri.route_id=input_route_id; For c_instance In c_link_instance(v_opr_id)
                    Loop
                      --根据业务电路创建(拷贝)传输伪线产品实例
                      c_instance.inst_id       := Sf_Pub_Get_Resid('Seq_Srv_Instance_Inst_Id','0000');
                      c_instance.route_id      := v_pw_id;
                      c_instance.srv_id        := 1010;
                      c_instance.route_type    := 1048;
                   c_instance.delete_state  := '0';
    c_instance.old_sp        := gv_old_sp;
    Insert Into srv_instance Values c_instance;
    End Loop;
      

  3.   

    这样倒是可以实现,不过没有效率。
    在外面声明游标,类似这样 open cursor for SELECT * FROM A 
      

  4.   

    1楼正解:3456 FOR VARSTR IN (SELECT * FROM A)LOOP     IF VARSTR.某个字段 判断是否有误 THEN          INSERT INTO B          SELECT * FROM A WHERE A.主键 = VARSTR.主键 ;     END IF; END LOOP;