In Oracle PL/SQL, FOR LOOP con clausola REVERSE viene utilizzato per ripetere l'iterazione del ciclo in ordine inverso. Di seguito sono riportati la sintassi e gli esempi per REVERSE FOR LOOP .
Sintassi
FOR n IN REVERSE start_number .. end_number LOOP -- statement to execute in every iteration END LOOP;
Esempi Oracle FOR LOOP REVERSE
1. Stampa il numero in ordine inverso
Nell'esempio seguente, stamperà il numero da 1 a 5 in ordine inverso.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Uscita:
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Stampa la data in ordine inverso
Nell'esempio seguente, verrà stampata la data dal 1 gennaio 2018 al 5 gennaio 2018 in ordine inverso. Ecco la piccola parte complicata, perché FOR LOOP incrementa o decrementa solo i numeri, quindi prima converto la data in un numero e poi riconverto la data durante la stampa.
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; /
Uscita:
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Vedi anche:
- Esempi di Oracle TO_CHAR(numero)
- Esempi di Oracle TO_CHAR(data)
- Esempi di funzioni Oracle TO_DATE