Cuente el número de un día especial entre dos fechas usando PL/SQL

Prerrequisito: introducción a PL/SQL , toma de decisiones en PL/SQL

Escriba un programa pl/sql para ingresar dos fechas e imprimir el número de domingos entre esas dos fechas.

Explicación:
antes de cada iteración del ciclo, se evalúa la condición. Si se evalúa como VERDADERO , se ejecuta secuencia_de_instrucciones. Si la condición se evalúa como FALSO o NULL , el bucle finaliza y el control se reanuda después de las instrucciones END LOOP .

Nota:
La única diferencia entre el ciclo simple y el ciclo while es que primero se ejecuta simplemente y luego se verifica la condición, por lo que el ciclo simple se ejecuta al menos una vez y en el ciclo while primero se verifica la condición y luego se ejecuta.

Ejemplo 1:

Input: Enter value for date1: 01-SEP-19 
      Enter value for date2: 29-SEP-19

Output: no of Sundays : 5 

Ejemplo-2:

Input: Enter value for date1: 01-SEP-19
      Enter value for date2: 15-SEP-19

Output: no of Sundays: 3 

Código:

--declare the variables D1 and D2.
--type of variable is Date.
SQL> DECLARE
        D1 Date;
        D2 Date;
        Cnt Number:=0;
    BEGIN 
        D1:='&Date1';
        D2:='&Date2';
        D1:=next_day(D1-1, 'SUNDAY');
   --check the condition by using while loop.
        while(D1<=D2)
    LOOP
        Cnt:=Cnt+1;
        D1:=D1+7;
    END LOOP;
        dbms_output.put_line('no of Sundays:'||Cnt);
    END;
    /
--end of program

Producción:

Enter value for date1: 01-SEP-19
old 5: Begin D1:='&Date1';
new 5: Begin D1:='01-SEP-19';

Enter value for date2: 29-SEP-19
old   6:  D2:='&Date2';
new   6:  D2:='29-SEP-19';
no of Sundays:5 

Procedimiento PL/SQL completado con éxito.

Ventajas: –
Al usar el bucle while primero, verifica la condición y luego ejecuta, por lo que contamos fácilmente el número de un día especial entre dos fechas.

Publicación traducida automáticamente

Artículo escrito por gangwarjacob y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *