В Oracle PL/SQL FOR LOOP с клауза REVERSE се използва за повторение на итерацията на цикъла в обратен ред. Следват синтаксисът и примерите за REVERSE FOR LOOP .
Синтаксис
FOR n IN REVERSE start_number .. end_number LOOP -- statement to execute in every iteration END LOOP;
Примери за Oracle FOR LOOP REVERSE
1. Отпечатайте номера в обратен ред
В следващия пример той ще отпечата числото от 1 до 5 в обратен ред.
SET SERVEROUTPUT ON; BEGIN FOR i IN REVERSE 1 .. 5 LOOP DBMS_OUTPUT.put_line (i); END LOOP; END; /
Изход:
5 4 3 2 1 PL/SQL procedure successfully completed.
2. Отпечатайте датата в обратен ред
В следващия пример ще отпечата датата от 1 януари 2018 г. до 5 януари 2018 г. в обратен ред. Ето малката сложна част, защото FOR LOOP само увеличава или намалява числата, така че първо преобразувам датата в число и след това преобразувам обратно към датата при печат.
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; /
Изход:
05/01/2018 04/01/2018 03/01/2018 02/01/2018 01/01/2018 PL/SQL procedure successfully completed.
Вижте също:
- Примери за Oracle TO_CHAR(число)
- Примери за Oracle TO_CHAR(дата)
- Примери за функции на Oracle TO_DATE
-
Как мога да намеря кои таблици препращат към дадена таблица в Oracle SQL Developer?
-
Oracle PL/SQL:Проверете дали BLOB или CLOB са празни
-
ORA-01008:не всички променливи са обвързани. Те са обвързани
-
Как да видите изображение от колона blob в Oracle с JasperReports?
-
C#:Обектът не може да бъде прехвърлен от DbNull към други типове