Mega Code Archive

 
Categories / Oracle PLSQL / Cursor
 

Close a cursor after looping

SQL> SQL> CREATE TABLE myStudent (   2    student_id NUMBER(5) NOT NULL,   3    department CHAR(3)   NOT NULL,   4    course     NUMBER(3) NOT NULL,   5    grade      CHAR(1)   6    ); Table created. SQL> SQL> INSERT INTO myStudent (student_id, department, course, grade)   2                           VALUES (10000, 'CS', 102, 'A'); 1 row created. SQL> SQL> INSERT INTO myStudent (student_id, department, course, grade)   2                           VALUES (10002, 'CS', 102, 'B'); 1 row created. SQL> SQL> INSERT INTO myStudent (student_id, department, course, grade)   2                           VALUES (10003, 'CS', 102, 'C'); 1 row created. SQL> SQL> INSERT INTO myStudent (student_id, department, course, grade)   2                           VALUES (10000, 'HIS', 101, 'A'); 1 row created. SQL> SQL> INSERT INTO myStudent (student_id, department, course, grade)   2                           VALUES (10001, 'HIS', 101, 'B'); 1 row created. SQL> SQL> INSERT INTO myStudent (student_id, department, course, grade)   2                           VALUES (10002, 'HIS', 101, 'B'); 1 row created. SQL> SQL> SQL> set serveroutput on SQL> SQL> CREATE OR REPLACE PROCEDURE RSLoop AS   2    v_RSRec myStudent%ROWTYPE;   3    CURSOR c_RSGrades IS SELECT * FROM myStudent ORDER BY grade;   4  BEGIN   5    OPEN c_RSGrades;   6    LOOP   7      FETCH c_RSGrades INTO v_RSRec;   8      EXIT WHEN c_RSGrades%NOTFOUND;   9    END LOOP;  10    CLOSE c_RSGrades;  11  12    DBMS_OUTPUT.PUT_LINE('Last row selected has ID ' || v_RSRec.student_id);  13  END RSLoop;  14  / Procedure created. SQL> show errors No errors. SQL> SQL> SQL> SQL> SQL> drop table myStudent; Table dropped.