Cursor Oracle PLSQL Tutorial

SQL>  CREATE TABLE emp (
  2    id         NUMBER PRIMARY KEY,
  3    fname VARCHAR2(50),
  4    lname  VARCHAR2(50)
  5  );
Table created.
SQL>
SQL> INSERT INTO emp (id, fname, lname)VALUES (1, 'A', 'B');
1 row created.
SQL> INSERT INTO emp (id, fname, lname)VALUES (2, 'C', 'D');
1 row created.
SQL> INSERT INTO emp (id, fname, lname)VALUES (3, 'Enn', 'F');
1 row created.
SQL> INSERT INTO emp (id, fname, lname)VALUES (4, 'G', 'H');
1 row created.
SQL> INSERT INTO emp (id, fname, lname)VALUES (5, 'G', 'Z');
1 row created.
SQL>
SQL> SET SERVEROUTPUT ON ESCAPE OFF
SQL>
SQL> CREATE OR REPLACE PROCEDURE emp_sel(cv_results IN OUT SYS_REFCURSOR) IS
  2  BEGIN
  3     OPEN cv_results FOR SELECT id, fname, lname FROM emp;
  4  END;
  5  /
Procedure created.
SQL>
SQL> COL fname FORMAT A12
SQL> VARIABLE x REFCURSOR
SQL> EXEC emp_sel(:x)
PL/SQL procedure successfully completed.
SQL> PRINT x
        ID FNAME        LNAME
---------- ------------ --------------------------------------------------
         1 A            B
         2 C            D
         3 Enn          F
         4 G            H
         5 G            Z
5 rows selected.
SQL>
SQL> drop table emp;
Table dropped.