Retourner plusieurs lignes dans un curseur PL/SQL (Oracle)
0Pour mémoire. Pour retourner plusieurs champs en une ligne un “select 1,2,3 from dual” suffit, mais qu’en est il pour retourner ces même résultat en ligne ? Facile, la réponse “union” tout simplement. La construction d’un curseur retournant plusieurs lignes se fait de cette façon:
SELECT 1 FROM dual UNION SELECT 2 FROM DUAL UNION SELECT 3 FROM DUAL;
Implémentons le dans la définition d’un curseur entre le ‘declare’ et le ‘begin’ pour une utilisation dans le corps de la procédure :
Open cur FOR SELECT 1 FROM DUAL UNION SELECT 2 FROM DUAL UNION SELECT 3 FROM DUAL;
Par la suite vous pouvez lui affecter n’importe quelle traitement pour chaque ligne, il suffit de les itérer a travers une boucle simple :
-- Lecture d'une ligne Loop Fetch Cur --Variable de travail Into lc$id; --Sortie lorsque le curseur ne ramène plus de ligne Exit When Cur%NOTFOUND ; /* TRAITEMENT */ End loop ; --Fermeture du curseur close Cur;
Share