Pourquoi le voudriez-vous ? Vraisemblablement, si vous sélectionnez trois colonnes dans votre déclaration de curseur, vous avez besoin des trois colonnes dans votre code, et vous devez donc récupérer les trois colonnes dans trois variables locales distinctes, c'est-à-dire
DECLARE
x integer;
y integer;
z integer;
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
BEGIN
OPEN c1;
LOOP
FETCH c1
INTO x, y, z;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;
Vous pouvez également déclarer un type d'enregistrement basé sur la déclaration du curseur et extraire des données dans ce type d'enregistrement.
DECLARE
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
c1_rec c1%ROWTYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1
INTO c1_rec;
dbms_output.put_line( c1_rec.column2 );
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;
Vous pouvez également vous débarrasser entièrement de la boucle explicite, ce qui est généralement l'approche préférée car vous n'avez pas à vous soucier des fuites de curseur et (dans les versions modernes) Oracle peut automatiquement effectuer des collectes en masse pour vous.
DECLARE
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
BEGIN
FOR c1_rec IN c1
LOOP
dbms_output.put_line( c1_rec.column2 );
END LOOP;
END;