•Ver el uso de algunas funciones de fecha en PL/SQL y con ellas crear una(función, trigger, procedimiento...) que cumpla cierto requerimiento .
•Mas que nada, entretenerme un poco.
_____________________________________________________________________________________•Mas que nada, entretenerme un poco.
Hace poco tuve una asignación en la cual tenia que modificar un Schedule Job el cual tenia que ejecutarse por primera ver el día 1(primero) del siguiente mes a una hora especifica y luego tenia que seguir ejecutándose cada mes el día 1(primero) a la misma hora ya establecida.
Para completar la tarea utilize las funciones que presento a continuación pero con ciertas diferencias:
Nota: No doy muchas explicaciones ya que las funciones que uso están explicadas en publicaciones anteriores.
Para completar la tarea utilize las funciones que presento a continuación pero con ciertas diferencias:
Nota: No doy muchas explicaciones ya que las funciones que uso están explicadas en publicaciones anteriores.
CREATE OR REPLACE FUNCTION F_L_DATE(P_DAY IN CHAR)
RETURN VARCHAR2
AS
CURSOR C_FIRST IS
SELECT --'FM' Remueve ciertos espacios que contienen las fechas
TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE, -1))+1,'FMDAY ','NLS_DATE_LANGUAGE=SPANISH')
||TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE, -1))+1,'DD')
FROM DUAL; --NLS_DATE_LANGUAGE: Especificar el idioma en cual se mostrara la fecha.
----
CURSOR C_LAST IS
SELECT
TO_CHAR(LAST_DAY(SYSDATE), 'FMDAY ','NLS_DATE_LANGUAGE=SPANISH')
||TO_CHAR(LAST_DAY(SYSDATE), 'DD')
FROM DUAL;
---
V_FIRST VARCHAR(13);
V_LAST V_FIRST%TYPE;
BEGIN
IF UPPER(P_DAY) = 'F' THEN
OPEN C_FIRST;
FETCH C_FIRST INTO V_FIRST;
CLOSE C_FIRST;
RETURN INITCAP(V_FIRST);
ELSIF UPPER(P_DAY) = 'L' THEN
OPEN C_LAST;
FETCH C_LAST INTO V_LAST;
CLOSE C_LAST;
RETURN INITCAP(V_LAST);
ELSE
RETURN 'Valid Entries: F= First Day/Primer Día; L= Last Day/Último Día';
END IF;
END;
_____________________________________________________________________________________
Usando dicha Función:
---
Usando dicha Función:
---
SELECT
F_L_DATE('K')
FROM DUAL;
-- No se cumple condición alguna por lo cual retorna:
--OUTPUT: Valid Entries: F= First Day/Primer Día; L= Last Day/Último Día
--
SELECT
F_L_DATE('F')
FROM DUAL;
-- Se Cumple primer condición del IF por lo cual retorna el primer día del mes actual
--OUTPUT: Domingo 01
--
SELECT
F_L_DATE('L')
FROM DUAL;
-- Se Cumple segunda condición del IF por lo cual retorna el último día del mes actual
--OUTPUT: Martes 31