Cursor Oracle PLSQL

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.