In Oracle PL/SQL wird FOR LOOP mit REVERSE-Klausel verwendet, um die Schleifeniteration in umgekehrter Reihenfolge zu wiederholen. Im Folgenden finden Sie die Syntax und Beispiele für REVERSE FOR LOOP .
Syntax
FOR n IN REVERSE start_number .. end_number LOOP -- statement to execute in every iteration END LOOP;
Oracle FOR LOOP REVERSE-Beispiele
1. Nummer in umgekehrter Reihenfolge drucken
Im folgenden Beispiel wird die Zahl von 1 bis 5 in umgekehrter Reihenfolge ausgegeben.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Ausgabe:
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Datum in umgekehrter Reihenfolge drucken
Im folgenden Beispiel wird das Datum vom 1. Januar 2018 bis zum 5. Januar 2018 in umgekehrter Reihenfolge gedruckt. Hier ist der etwas knifflige Teil, denn FOR LOOP erhöht oder verringert nur die Zahlen, also wandle ich zuerst das Datum in eine Zahl um und dann beim Drucken wieder in das Datum umwandeln.
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; /
Ausgabe:
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Siehe auch:
- Oracle TO_CHAR(number) Beispiele
- Oracle TO_CHAR(date) Beispiele
- Oracle TO_DATE-Funktionsbeispiele