Beispiel für einen Oracle-Cursor für gespeicherte Prozeduren

Hier ist ein Beispiel für eine gespeicherte Prozedur in der Oracle-Datenbank. Verwenden Sie Cursor, um die Datensätze zu bearbeiten oder zu navigieren

1. SQL-Skript für die Tabelle

DBUSER-Tabellenerstellungsskript

CREATE TABLE DBUSER (
  USER__ID       NUMBER (5)    NOT NULL,
  USERNAME      VARCHAR2 (20)  NOT NULL,
  CREATED__BY    VARCHAR2 (20)  NOT NULL,
  CREATED__DATE  DATE          NOT NULL,
  PRIMARY KEY ( USER__ID )
 )

2. Gespeicherte Prozedur

Eine gespeicherte Prozedur gibt den Datensatz als Cursortyp ( SYS__REFCURSOR ) aus dem übereinstimmenden Benutzernamen zurück.

CREATE OR REPLACE PROCEDURE getDBUSERCursor(
       p__username IN DBUSER.USERNAME%TYPE,
       c__dbuser OUT SYS__REFCURSOR)
IS
BEGIN

  OPEN c__dbuser FOR
  SELECT **  FROM DBUSER WHERE USERNAME LIKE p__username || '%';

END;/....

===  3. Aufrufe von PL/SQL

Holen Sie sich den zurückgegebenen Ref-Cursor und navigieren Sie wie folgt in den Datensätzen:

DECLARE c dbuser SYS REFCURSOR; temp__dbuser DBUSER%ROWTYPE; BEGIN

--records are assign to cursor 'c__dbuser'
getDBUSERCursor('mkyong',c__dbuser);
LOOP
    --fetch cursor 'c__dbuser' into dbuser table type 'temp__dbuser'
FETCH c__dbuser INTO temp__dbuser;
--exit if no more records
EXIT WHEN c__dbuser%NOTFOUND;
--print the matched username
dbms__output.put__line(temp__dbuser.username);
END LOOP;
CLOSE c__dbuser;

END;/…​.

Cursor Link://Tag/oracle/[oracle]Link://Tag/gespeicherte Prozedur/[gespeicherte Prozedur]