In Oracle PL/SQL wordt FOR LOOP met REVERSE-clausule gebruikt om de lus-iteratie in omgekeerde volgorde te herhalen. Hieronder volgen de syntaxis en voorbeelden voor REVERSE FOR LOOP .
Syntaxis
FOR n IN REVERSE start_number .. end_number LOOP -- statement to execute in every iteration END LOOP;
Oracle FOR LOOP REVERSE Voorbeelden
1. Nummer afdrukken in omgekeerde volgorde
In het volgende voorbeeld wordt het nummer van 1 tot 5 in omgekeerde volgorde afgedrukt.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Uitvoer:
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Datum in omgekeerde volgorde afdrukken
In het volgende voorbeeld wordt de datum van 1 januari 2018 tot 5 januari 2018 in omgekeerde volgorde afgedrukt. Hier is het kleine lastige deel, want FOR LOOP verhoogt of verlaagt alleen de getallen, dus eerst converteer ik de datum naar een getal en converteer ik dan terug naar de datum tijdens het afdrukken.
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; /
Uitvoer:
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Zie ook:
- Oracle TO_CHAR(nummer) Voorbeelden
- Oracle TO_CHAR(date) Voorbeelden
- Oracle TO_DATE Functievoorbeelden