En Oracle PL/SQL, FOR LOOP con la cláusula REVERSE se usa para repetir la iteración del bucle en orden inverso. Los siguientes son la sintaxis y los ejemplos de REVERSE FOR LOOP .
Sintaxis
FOR n IN REVERSE start_number .. end_number LOOP -- statement to execute in every iteration END LOOP;
Oracle FOR LOOP REVERSE Ejemplos
1. Imprimir número en orden inverso
En el siguiente ejemplo, imprimirá el número del 1 al 5 en orden inverso.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Salida:
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Imprimir fecha en orden inverso
En el siguiente ejemplo, imprimirá la fecha del 1 de enero de 2018 al 5 de enero de 2018 en orden inverso. Aquí está la pequeña parte complicada, porque FOR LOOP solo incrementa o decrementa los números, así que primero convierto la fecha en un número y luego vuelvo a convertir la fecha al imprimir.
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; /
Salida:
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Ver también:
- Ejemplos de Oracle TO_CHAR(número)
- Ejemplos de Oracle TO_CHAR(fecha)
- Ejemplos de funciones de Oracle TO_DATE