CURSOR CUR_NAME_1 IS
            SELECT WORKER_NAME FROM MST_WORKER
            WHERE WORKER_NO IN (SELECT WORKER_NO FROM (SELECT WORKER_NO FROM INP_LINE_WORKER WHERE LINE_NO = X_IN_LINENO ORDER BY WORKER_NO)
                               );
    BEGIN
        OPEN CUR_NAME_1;
        LOOP
            X_NUM := X_NUM + 1;
            FETCH CUR_NAME_1 INTO X_WORK_NO(X_NUM);
            IF CUR_NAME_1%NOTFOUND THEN
                EXIT;
            END IF;
        END LOOP;
        CLOSE CUR_NAME_1;
    END;
永远检索出1条,怎么回事?

解决方案 »

  1.   

    单独运行cursor里的selelct是不是也是一条数据?
      

  2.   

    SELECT WORKER_NO FROM INP_LINE_WORKER WHERE LINE_NO = X_IN_LINENO ORDER BY WORKER_NO
    这条语句查出几条呢
      

  3.   

    单独运行cursor里的selelct是好几条数据
      

  4.   

    SELECT WORKER_NAME FROM MST_WORKER
      WHERE WORKER_NO IN (SELECT WORKER_NO FROM (SELECT WORKER_NO FROM INP_LINE_WORKER WHERE LINE_NO = X_IN_LINENO ORDER BY WORKER_NO)
      );看下这条语句的查询结果…
      

  5.   

    SELECT WORKER_NAME FROM MST_WORKER
      WHERE WORKER_NO IN (SELECT WORKER_NO FROM (SELECT WORKER_NO FROM INP_LINE_WORKER WHERE LINE_NO = X_IN_LINENO ORDER BY WORKER_NO)
      )单独这个的有几条数据
      

  6.   

    --试试批量看
    CURSOR CUR_NAME_1 IS
      SELECT WORKER_NAME FROM MST_WORKER
      WHERE WORKER_NO IN (SELECT WORKER_NO FROM (SELECT WORKER_NO FROM INP_LINE_WORKER WHERE LINE_NO = X_IN_LINENO ORDER BY WORKER_NO)
      );
      BEGIN
      OPEN CUR_NAME_1;
      FETCH CUR_NAME_1 bulk collect INTO X_WORK_NO;  CLOSE CUR_NAME_1;
      END;