FOR REC_A IN CUR_A LOOP
  FOR REC_B IN CUR_B LOOP
    INSERT
       ...
这么用的

解决方案 »

  1.   

    declare
    CURSOR CUR_A IS
    SELECT  * FROM A;
    CURSOR CUR_B(p_x varchar2) IS
    SELECT * FROM B WHERE X=p_x;
    begin
    for a_sor in cur_a loop
    for b_sor in cur_b(a_sor.x) loop
    ....
    end loop
    end loop
    end;
    /
      

  2.   

    后面的cursor可以引用前面的cursor,如:
      CURSOR CUR_DDXX1 IS
      SELECT A.DHAO00,A.KHDM00,A.SHRQ00,B.XKZH00,B.FPLB00,NVL(A.YWRY00,'1000') YWRYDM,B.FXCKDM,A.DHFS00,B.YXRYDM,B.YXZGRY,B.YXZRDM
        FROM XSTDDXX1 A,KHVXXGL0 B
       WHERE A.KHDM00=B.KHDM00
         AND A.GSDM00=B.GSDM00
         AND A.GSDM00=GSDM;
         
      CUR_DDXX1_VAL CUR_DDXX1%ROWTYPE;
      
      CURSOR CUR_DDXX2 IS
      SELECT JYDM00,JYMC00,DJIA00,FXSL00,SL0000
        FROM XSTDDXX2
       WHERE DHAO00=CUR_DDXX1_VAL.DHAO00;
      

  3.   

    可以这样用么,我就是这样用的,然后FOR CUR_DDXX1_VAL IN CUR_DDXX1 LOOP
        FOR CUR_DDXX2_VAL IN CUR_DDXX2 LOOP
          INSERT

    我有满足条件的数据,但是无法执行到INSERT
    改成CUR_DDXX1 同上  CURSOR CUR_DDXX2 IS
      SELECT JYDM00,JYMC00,DJIA00,FXSL00,SL0000
        FROM XSTDDXX2
       WHERE DHAO00=WK_A;FOR CUR_DDXX1_VAL IN CUR_DDXX1 LOOP
        WK_A = CUR_DDXX1_VAL.DHA000;
        FOR CUR_DDXX2_VAL IN CUR_DDXX2 LOOP
          INSERT

      

  4.   

    修改后可以执行INSERT,为什么呢
      

  5.   

    2个游标在执行部分都要打开;且CUR_A 要在 CUR_B 前打开,泥是不是没有执行OPEN CUR_A?
      

  6.   

    FOR CUR_DDXX1_VAL IN CUR_DDXX1 LOOP
    这句就已经open了
      

  7.   

    CUR_DDXX1_VAL CUR_DDXX1%ROWTYPE;
    這一行不要宣告