很好取啊给你写了个简单的例子 创建表 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
为什么我这样写,最后的输出里除了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;
创建表
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
大侠讲解下,谢谢了~~~
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;