SYS_REFCURSOR type parameter : REFCURSOR « Cursor « Oracle PL/SQL Tutorial






SQL>
SQL>
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, 'E', '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_regexp_like (cv_emp IN OUT SYS_REFCURSOR)
  2  IS
  3  BEGIN
  4
  5     OPEN cv_emp FOR
  6     SELECT id, fname, lname
  7     FROM emp
  8     WHERE REGEXP_LIKE(lname, '^h', 'i');
  9
 10  EXCEPTION
 11     WHEN OTHERS
 12     THEN
 13        DBMS_OUTPUT.PUT_LINE(sqlerrm);
 14  END;
 15  /

Procedure created.

SQL>
SQL> COL fname FORMAT A20
SQL> COL lname FORMAT A20
SQL>
SQL> VARIABLE x REFCURSOR
SQL> EXEC emp_sel_regexp_like(:x)

PL/SQL procedure successfully completed.

SQL>
SQL> print x

no rows selected

SQL> drop table emp;

Table dropped.

SQL>








25.13.REFCURSOR
25.13.1.Define refcursor variable
25.13.2.Output value in a refcursor
25.13.3.The use of REF CURSOR
25.13.4.An example of using SYS_REFCURSOR for cursor variable processing
25.13.5.Cursor expressions as arguments to functions called from SQL
25.13.6.Subprograms returning resultsets by using SYS_REFCURSOR
25.13.7.Row type Reference cursor
25.13.8.Open SYS_REFCURSOR for select ... from
25.13.9.SYS_REFCURSOR type parameter