Creer une fonction retournant un curseur dans un package PL/SQL (Oracle)
0Dans la déclaration des méthodes du package déclarer la méthode et sont type de curseur retourné :
TYPE curseur_test IS REF CURSOR; /* DETAILS FONCTION */ FUNCTION FONCTION_TEST ( PARAM$UN IN NUMBER, PARAM$DEBUG IN NUMBER ) RETURN curseur_test;
Dans la définition du corps du package ajoutez alors :
FUNCTION FONCTION_TEST ( PARAM$UN IN NUMBER, PARAM$DEBUG IN NUMBER ) RETURN curseur_test IS var_cur_test curseur_test; BEGIN Open var_cur_test FOR SELECT 'x' FROM DUAL; RETURN var_cur_test; END FONCTION_TEST; /
Puis si vous l’utilisée dans une procédure annexe (ou bien même au sein de ce package comme dans notre exemple) procédez de cette façon :
PROCEDURE PROCEDURE_TEST ( PARAM$UN IN NUMBER, PARAM$DEBUG IN NUMBER ) IS --Définition du curseur tampon TYPE TYP_REF_CUR IS REF CURSOR ; cur_test_travail TYP_REF_CUR ; lc$debug NUMBER :=0; lc$tampon NUMBER :=0; BEGIN Cur_test_travail := PKG_NOM.FONCTION_TEST( 0 , lc$debug ); -- Lecture d'une ligne Loop Fetch Cur_test_travail --Ajout de la valeur dans notre tampon Into lc$tampon; -- sortie lorsque le curseur ne ramène plus de ligne Exit When Cur_test_travail%NOTFOUND ; /* TRAITEMENT */ End loop ; close Cur_test_travail; END PROCEDURE_TEST; /
Share