PL SQL Oracle PLSQL

SQL>
SQL> CREATE TABLE lecturer (
  2    id               NUMBER(5) PRIMARY KEY,
  3    first_name       VARCHAR2(20),
  4    last_name        VARCHAR2(20),
  5    major            VARCHAR2(30),
  6    current_credits  NUMBER(3)
  7    );
Table created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10001, 'Scott', 'Lawson','Computer Science', 11);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major, current_credits)
  2                VALUES (10002, 'Mar', 'Wells','History', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10003, 'Jone', 'Bliss','Computer Science', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10004, 'Man', 'Kyte','Economics', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10005, 'Pat', 'Poll','History', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10006, 'Tim', 'Viper','History', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10007, 'Barbara', 'Blues','Economics', 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10008, 'David', 'Large','Music', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10009, 'Chris', 'Elegant','Nutrition', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10010, 'Rose', 'Bond','Music', 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10011, 'Rita', 'Johnson','Nutrition', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10012, 'Sharon', 'Clear','Computer Science', 3);
1 row created.
SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE PACKAGE StudentFetch AS
  2    TYPE t_lecturer IS TABLE OF lecturer%ROWTYPE
  3      INDEX BY BINARY_INTEGER;
  4    PROCEDURE OpenCursor;
  5    PROCEDURE CloseCursor;
  6    FUNCTION FetchRows(p_BatchSize IN OUT NUMBER,p_lecturer OUT t_lecturer)
  7      RETURN BOOLEAN;
  8    PROCEDURE PrintRows(p_BatchSize IN NUMBER,
  9                        p_lecturer IN t_lecturer);
 10  END StudentFetch;
 11  /
Package created.
SQL> show errors
No errors.
SQL>
SQL> CREATE OR REPLACE PACKAGE BODY StudentFetch AS
  2    CURSOR myAllLecturer IS
  3      SELECT *
  4        FROM lecturer
  5        ORDER BY ID;
  6
  7    PROCEDURE OpenCursor IS
  8    BEGIN
  9      OPEN myAllLecturer;
 10    END OpenCursor;
 11
 12    PROCEDURE CloseCursor IS
 13    BEGIN
 14      CLOSE myAllLecturer;
 15    END CloseCursor;
 16
 17    FUNCTION FetchRows(p_BatchSize IN OUT NUMBER,
 18                       p_lecturer OUT t_lecturer)
 19      RETURN BOOLEAN IS
 20      v_Finished BOOLEAN := TRUE;
 21    BEGIN
 22      FOR v_Count IN 1..p_BatchSize LOOP
 23        FETCH myAllLecturer INTO p_lecturer(v_Count);
 24        IF myAllLecturer%NOTFOUND THEN
 25          v_Finished := FALSE;
 26          p_BatchSize := v_Count - 1;
 27          EXIT;
 28        END IF;
 29      END LOOP;
 30      RETURN v_Finished;
 31    END FetchRows;
 32
 33    PROCEDURE PrintRows(p_BatchSize IN NUMBER,
 34                        p_lecturer IN t_lecturer) IS
 35    BEGIN
 36      FOR v_Count IN 1..p_BatchSize LOOP
 37        DBMS_OUTPUT.PUT('ID: ' || p_lecturer(v_Count).ID);
 38        DBMS_OUTPUT.PUT(' Name: ' || p_lecturer(v_Count).first_name);
 39        DBMS_OUTPUT.PUT_LINE(' ' || p_lecturer(v_Count).last_name);
 40      END LOOP;
 41    END PrintRows;
 42  END StudentFetch;
 43  /
Package body created.
SQL> show errors
No errors.
SQL>
SQL>
SQL>
SQL> drop table lecturer;
Table dropped.
SQL>