示例示例显示FOR UPDATE CURSOR
-------------------------------------------------- ---------------------------
DECLARE
CURSOR EMPREC IS SELECT * FROM EMP FOR UPDATE OF SAL;
MYREC EMPREC%ROWTYPE;
NUM NUMBER(4);
BEGIN
OPEN EMPREC;
LOOP
FETCH EMPREC INTO MYREC;
EXIT WHEN EMPREC%NOTFOUND;
NUM:=EMPREC%ROWCOUNT;
UPDATE EMP SET SAL=4000 WHERE CURRENT OF EMPREC;
END LOOP;
CLOSE EMPREC;
DBMS_OUTPUT.PUT_LINE(NUM ||' RECORDS UPDATED');
END;
显示PARAMETARISED CURSOR的示例示例
-------------------------------------------------- ---------------------------------
DECLARE
RR EMP%ROWTYPE;
CURSOR C1 (MDEPTNO NUMBER,MJOB VARCHAR) IS
SELECT * FROM EMP WHERE DEPTNO=MDEPTNO AND JOB=MJOB;
BEGIN
OPEN C1(20,'CLERK');
LOOP
FETCH C1 INTO RR;
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(RR.ENAME);
END LOOP;
CLOSE C1;
END;
参数可以传递给游标
因此,游标在某种程度上类似于IN模式过程。
在打开游标时传递参数。
样例程序显示在光标内使用光标
================================================== ==
declare
cursor c1 is select deptno from dept order by deptno;
cursor c2 (mm dept.deptno%type) is select ename from emp where deptno=mm;
begin
for mrec in c1 loop
for mrec1 in c2(mrec.deptno) loop
dbms_output.put_line(mrec1.ename);
end loop;
end loop;
end;
同时检查
PL / SQL游标-4From: https://bytes.com/topic/oracle/insights/741694-pl-sql-cursor-3-a