
/**//*******************游标使用的基本格式1***********************/
DECLARE
CURSOR mycur IS
SELECT * FROM emp;
myrecord emp%ROWTYPE;
BEGIN
IF mycur%ISOPEN THEN
OPEN mycur;
END IF;
FETCH mycur INTO myrecord;
WHILE mycur%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(mycur%ROWCOUNT|||','||myrecord.empno||','||myrecord.ename);
FETCH mycur INTO myrecord;
END LOOP;
CLOSE mycur;
END;
/

/**//*******************游标使用的基本格式2***********************/
DECLARE
CURSOR mycur IS
SELECT * FROM emp;
myrecord emp%ROWTYPE;
BEGIN
IF NOT mycur%ISOPEN THEN
OPEN mycur;
END IF;
LOOP
FETCH mycur INTO myrecord;
EXIT WHEN mycur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(mycur%ROWCOUNT|||','||myrecord.empno||','||myrecord.ename);
END LOOP;
CLOSE mycur;
END;
/

/**//*******************游标 For Loop ***********************/
DECLARE
CURSOR mycur IS
SELECT * FROM emp;
BEGIN
FOR cur IN mycur LOOP
DBMS_OUTPUT.PUT_LINE(mycur%ROWCOUNT||','||cur.empno||','||cur.ename);
END LOOP;
END;
/

/**//*******************参数化游标***********************/
DECLARE
CURSOR mycur(dept_no varchar2) IS --参数不定义长度和精度
SELECT empno,ename,dname FROM emp a INNER JOIN dept b ON a.deptno = b.deptno WHERE a.deptno= dept_no;
BEGIN
FOR cur IN mycur('20') LOOP
DBMS_OUTPUT.PUT_LINE(mycur%ROWCOUNT||','||cur.empno||','||cur.ename||','||cur.dname);
END LOOP;
END;
/




本文详细介绍了Oracle中游标的使用方法,包括基本格式1和2、游标for loop以及参数化游标的应用。通过实例展示了如何打开、读取及关闭游标,并提供了不同场景下的具体实现代码。
8万+

被折叠的 条评论
为什么被折叠?



