I Oracle PL/SQL används FOR LOOP med REVERSE-satsdel för att upprepa loopiteration i omvänd ordning. Följande är syntaxen och exemplen 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 Exempel
1. Skriv ut nummer i omvänd ordning
I följande exempel kommer den att skriva ut numret från 1 till 5 i omvänd ordning.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Utdata:
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Skriv ut datum i omvänd ordning
I följande exempel kommer det att skrivas ut från 1 januari 2018 till 5 januari 2018 i omvänd ordning. Här är den lilla knepiga delen, eftersom FOR LOOP bara ökar eller minskar siffrorna, så först konverterar jag datumet till ett tal och konverterar sedan tillbaka till datumet när jag skriver ut.
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; /
Utdata:
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Se även:
- Oracle TO_CHAR(nummer) Exempel
- Oracle TO_CHAR(datum) Exempel
- Oracle TO_DATE-funktionsexempel