preciso somar as horas trabalhadas no final e retorna-las
segue abaixo a funcção
create or replace function SOMA_DATA(dt_ini Date, dt_fim Date)
return varchar2
as
data1 date;
data2 date;
vdia varchar2(10);
vferiado INTEGER;
vtotal INTEGER;
begin
data1 := dt_ini;
data2 := dt_fim;
-- Enquanto data1 for menos que data2
WHILE data1 <= data2 LOOP
SELECT TO_CHAR (TO_DATE (data1, 'MM/DD/YYYY'), 'DY')
INTO vdia
FROM DUAL;
-- verificando se na data passada existe é sabado ou domingo
IF vdia IN ('SÁB','DOM')
THEN
EXIT;
END IF;
-- verificando se a data passada é feriado
DBMS_OUTPUT.put_line(data1);
SELECT COUNT(*) INTO vferiado FROM feriado WHERE dataferiado >= to_date(data1, 'dd/mm/rrrr')
AND dataferiado <= to_date(data2, 'dd/mm/rrrr');
IF vferiado > 0 THEN // ele não entra neste IF não sei porque
DBMS_OUTPUT.put_line('entrou no if');
return vferiado;
else
-- arqui eu estou tenatando somar as horas e no final me dar o total de horas trabalhada no perido passado
SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') AS AGORA,
TO_CHAR(SYSDATE + 10/1440, 'DD/MM/YYYY HH24:MI:SS')
into vtotal
FROM DUAL;
end if;
return vtotal;
END LOOP;
return
end SOMA_DATA;
obrigado a todos abraço!!!