这样改动以后试试。DECLARE CJHJYWID char(19);--??棳悈崋
        MLPNBID  char(19);--?乮極乯攙撪晹ID
        HHNBID   char(19);--?崋撪晹ID
        RYNBID   char(19);--恖?撪晹ID
        rowcount number;--庢弌強桳恖揑ID
      cursor ryid_cur is 
      SELECT DISTINCT RYID FROM HJXX_CZRKJBXXB;
      
     CURSOR diff_cur(
       p_RYID  HJXX_CZRKJBXXB.RYID%type) is 
     SELECT GMSFHM,--岞柉恎?崋?
            XM,
            XB,--惈?
            CSRQ,--弌惗擔婜
            MZ,--屲槩庡?>柉懓
            QYSJ,
            HHNBID
    FROM HJXX_CZRKJBXXB 
    WHERE RYID=p_RYID ORDER BY QYSJ;
    
begin
 --OPEN birth_cur;
 for v_c in ryid_cur loop      begin 
        for diff_c is diff_cur loop
            DBMS_OUTPUT.PUT_LINE(" GMSFHM=====" || diff_c.GMSFHM);
        end loop;
    end;
    
 end loop ;
 COMMIT;
end ;
/

解决方案 »

  1.   

    不能简单地程序里面定义Cursor,在这个地方,你应该使用游标变量。
      

  2.   

    谢谢了hqwang77(haiqing) 和 leoiong(leoiong) :
    正确的写法是:
    DECLARE CJHJYWID char(19);--??棳悈崋
            MLPNBID  char(19);--?乮極乯攙撪晹ID
            HHNBID   char(19);--?崋撪晹ID
            RYNBID   char(19);--恖?撪晹ID
            rowcount number;--庢弌強桳恖揑ID
          cursor ryid_cur is 
          SELECT DISTINCT RYID FROM HJXX_CZRKJBXXB;
          
         CURSOR diff_cur(
           p_RYID  HJXX_CZRKJBXXB.RYID%type) is 
         SELECT GMSFHM,--岞柉恎?崋?
                XM,
                XB,--惈?
                CSRQ,--弌惗擔婜
                MZ,--屲槩庡?>柉懓
                QYSJ,
                HHNBID
        FROM HJXX_CZRKJBXXB 
        WHERE RYID=p_RYID ORDER BY QYSJ;
        
    begin
     --OPEN birth_cur;
     for v_c in ryid_cur loop      begin 
            for diff_c in diff_cur(v_c.RYID) loop
                DBMS_OUTPUT.PUT_LINE(' GMSFHM=====' || diff_c.GMSFHM);
            end loop;
        end;
        
     end loop ;
     COMMIT;
    end ;
    /