OPEN c1;
     LOOP 
         FETCH c1 INTO c;
 empID(cnt) := c.ID;
 empName(cnt) := c.NAME;
 EXIT WHEN c1%NOTFOUND;
 cnt := cnt + 1;
     END LOOP;
     CLOSE c1;
     cnt := 1;
          -----35行
 改为:     OPEN c1;
     LOOP 
         FETCH c1 INTO c;
 EXIT WHEN c1%NOTFOUND;   --提前
 empID(cnt) := c.ID;
 empName(cnt) := c.NAME;
 cnt := cnt + 1;
     END LOOP;
     CLOSE c1;
     cnt := 1;
          -----35行

解决方案 »

  1.   

    PROCEDURE pc_Stu(empID OUT NE_ID,empName OUT DXC_NAME,empTotalPort OUT
                Total_Port)
     is
     CURSOR c1 IS SELECT ID,NAME FROM NE_INFO WHERE Role =1 ORDER BY ID;
     CURSOR c2 IS SELECT NE_INFO.ID,Count(NPC.NPC) AS cnum 
                  From NE_INFO,NPC
          Where NE_INFO.ID = NPC.NE_ID
          GROUP BY NE_INFO.ID
          ORDER BY NE_INFO.ID;
     cnt NUMBER DEFAULT 1;
     --c c1%ROWTYPE;
     --cc1 c2%ROWTYPE;
     Begin
     for v1 in c1 loop
             
     empID(cnt) := v1.ID;
     empName(cnt) := v1.NAME;

     cnt := cnt + 1;
         END LOOP;
       
         cnt := 1;
              -----35行
         for v2 in c2 loop
             --FETCH c2 INTO cc1;
     IF cnt = v2.ID + 1 then
        empTotalPort(cnt) := v2.cnum;
     else
        empTotalPort(cnt) := 0;
     END IF
    -- EXIT WHEN c2%NOTFOUND;
     cnt := cnt + 1;
         END LOOP;
         --CLOSE c2;
     END pc_Stu;