Dans Oracle PL/SQL, FOR LOOP avec la clause REVERSE est utilisée pour répéter l'itération de la boucle dans l'ordre inverse. Voici la syntaxe et les exemples pour REVERSE FOR LOOP .
Syntaxe
FOR n IN REVERSE start_number .. end_number LOOP -- statement to execute in every iteration END LOOP;
Exemples Oracle FOR LOOP REVERSE
1. Imprimer le numéro dans l'ordre inverse
Dans l'exemple suivant, il imprimera le nombre de 1 à 5 dans l'ordre inverse.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Sortie :
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Imprimer la date dans l'ordre inverse
Dans l'exemple suivant, il imprimera la date du 1er janvier 2018 au 5 janvier 2018 dans l'ordre inverse. Voici la petite partie délicate, car FOR LOOP ne fait qu'augmenter ou décrémenter les nombres, donc je convertis d'abord la date en nombre, puis je reconvertis à la date lors de l'impression.
SET SERVEROUTPUT ON; DECLARE start_date DATE := '01jan2018'; end_date DATE := '05jan2018'; BEGIN FOR i IN REVERSE TO_CHAR (start_date, 'yyyymmdd') .. TO_CHAR (end_date, 'yyyymmdd') LOOP DBMS_OUTPUT.put_line (TO_CHAR (TO_DATE (i, 'yyyymmdd'), 'dd/mm/yyyy')); END LOOP; END; /
Sortie :
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Voir aussi :
- Exemples d'Oracle TO_CHAR(nombre)
- Exemples d'Oracle TO_CHAR(date)
- Exemples de fonctions Oracle TO_DATE