假设: 0
   * 1
     2
     3
     4
游标查询的数据如上,如何不让游标取1,而直接取2呢?(*号代表游标指针)

解决方案 »

  1.   

    很好取啊给你写了个简单的例子
    创建表
    create table test as select rownum-1 rn from dual connect by rownum<10;
    创建匿名块
    declare
      cursor a is
        select rn from test;
      aa test.rn%type;
    begin
      open a;
      loop
        fetch a
          into aa;
        exit when a%notfound;
        if aa = 1 then
          fetch a
            into aa;
          exit when a%notfound;
        end if;
        dbms_output.put_line(aa);
      end loop;
      close a;
    end;
    结果
    0
    2
    3
    4
    5
    6
    7
    8
      

  2.   

    为什么我这样写,最后的输出里除了JOB='CLERK' OR C1_JOB='SALESMAN' 的还有别的JOB....
    大侠讲解下,谢谢了~~~
    CREATE OR REPLACE PROCEDURE E12
    IS
    C1_EMPNO EMP.EMPNO%TYPE;
    C1_ENAME EMP.ENAME%TYPE;
    C1_JOB EMP.JOB%TYPE;
    C1_MGR EMP.MGR%TYPE;
    CURSOR C1
    IS SELECT EMPNO,ENAME,JOB,MGR FROM EMP;
    BEGIN
    OPEN C1;
    LOOP
    FETCH C1
    INTO C1_EMPNO,C1_ENAME,C1_JOB,C1_MGR;
         EXIT WHEN C1%NOTFOUND;
      IF C1_JOB='CLERK' OR C1_JOB='SALESMAN' THEN
         FETCH C1 INTO C1_EMPNO,C1_ENAME,C1_JOB,C1_MGR;
         EXIT WHEN C1%NOTFOUND;
      END IF;
    PUT(C1_EMPNO||'   '||C1_ENAME||'   '||C1_JOB||'   '||C1_MGR);
    END LOOP;
    CLOSE C1;
    END E12;