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]