CREATE OR REPLACE FUNCTION check_month(p_table IN VARCHAR2)
RETURN VARCHAR2
IS
v_sql VARCHAR2(500);
v_month DATE := TRUNC(SYSDATE, 'mm');
v_cnt INTEGER;
BEGIN
v_sql :=
'SELECT COUNT(*) FROM (SELECT dt, ROW_NUMBER() OVER (PARTITION BY TRUNC(dt) ORDER BY 1) rn FROM '
|| p_table
|| ' WHERE to_date(dt,''yyyy-mm-dd-hh24.mi.ss'') >= :v_month'
|| ' AND to_date(dt,''yyyy-mm-dd-hh24.mi.ss'') < ADD_MONTHS(:v_month, 1)) WHERE rn = 1';
EXECUTE IMMEDIATE v_sql INTO v_cnt USING v_month, v_month;
IF v_cnt = TO_NUMBER(TO_CHAR(LAST_DAY(v_month), 'dd'))
THEN
RETURN 'Pass';
ELSE
RETURN 'Fail';
END IF;
END;
|