V Oracle PL/SQL se FOR LOOP s klauzulí REVERSE používá k opakování opakování smyčky v obráceném pořadí. Následuje syntaxe a příklady pro REVERSE FOR LOOP .
Syntaxe
FOR n IN REVERSE start_number .. end_number LOOP -- statement to execute in every iteration END LOOP;
Příklady Oracle FOR LOOP REVERSE
1. Vytisknout číslo v opačném pořadí
V následujícím příkladu vytiskne číslo od 1 do 5 v opačném pořadí.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Výstup:
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Datum tisku v opačném pořadí
V následujícím příkladu vytiskne datum od 1. ledna 2018 do 5. ledna 2018 v opačném pořadí. Zde je malá záludná část, protože FOR LOOP pouze zvyšuje nebo snižuje čísla, takže nejprve převedu datum na číslo a poté při tisku převedu zpět na datum.
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; /
Výstup:
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Viz také:
- Příklady TO_CHAR(číslo) Oracle
- Příklady Oracle TO_CHAR(datum)
- Příklady funkcí Oracle TO_DATE