Exemple de curseur de procédure stockée Oracle

Voici un exemple de procédure stockée dans la base de données Oracle, utilisant le curseur pour manipuler ou parcourir les enregistrements.

1. Script de table SQL

Script de création de table DBUSER.

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. Procédure stockée

Une procédure stockée renvoie l’enregistrement sous forme de type de curseur ( SYS__REFCURSOR ) en fonction du nom d’utilisateur correspondant.

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. Appels de PL/SQL

Obtenez le curseur de référence renvoyé et naviguez dans les enregistrements de la manière suivante:

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;/…​.

lien://tag/curseur/[curseur]lien://tag/oracle/[oracle]lien://étiquette/procédure stockée/[procédure stockée]