%FOUND:最近 SQL 影響行數 >0%NOTFOUND:相反%ISOPEN:顯式游標是否打開%ROWCOUNT:已提取行數(每次 FETCH 遞增)DECLARE
CURSOR c_dept IS SELECT * FROM dept;
r_dept dept%ROWTYPE;
BEGIN
OPEN c_dept;
FETCH c_dept INTO r_dept;
WHILE c_dept%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(r_dept.deptno||' '||r_dept.dname);
FETCH c_dept INTO r_dept;
END LOOP;
CLOSE c_dept;
END;
CURSOR c_dept(p_no VARCHAR2) IS SELECT * FROM dept WHERE deptno = p_no;
OPEN c_dept(10);
FOR r IN c_dept(10) LOOP
DBMS_OUTPUT.PUT_LINE(r.deptno||' '||r.dname);
END LOOP;
CURSOR c_dept IS SELECT dname FROM dept FOR UPDATE;
...
UPDATE dept SET dname = RTRIM(dname,'_t') WHERE CURRENT OF c_dept;
TYPE t_ref IS REF CURSOR;
c_ref t_ref;
OPEN c_ref FOR 'SELECT * FROM person';
LOOP FETCH c_ref INTO r_person; EXIT WHEN c_ref%NOTFOUND; ... END LOOP;
FOR r IN (SELECT dname FROM dept) LOOP ... END LOOP;