Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robson Rodrigues

Calculo de Horas Trabalhadas

Recommended Posts

Ta quase la rsrs

%3

Ta quase la rsrs

 

Tirei a parte que vc disse e ficou assim:

 

 

create or replace
FUNCTION fn_extra (p_entrada in date,p_saida_almoco in date,p_volta_almoco in date,p_saida in date,p_jornada in date)

RETURN varchar2 IS  /*horas*/


VN_HORAS NUMBER;
VD_JORNADA_EXEC DATE;
vs_saida varchar2(50);

BEGIN
  vn_horas := ((p_saida_almoco-p_entrada)*24);
  VN_HORAS := VN_HORAS + ((P_SAIDA-P_VOLTA_ALMOCO)*24);
  VD_JORNADA_EXEC  := TRUNC(P_JORNADA)  + (VN_HORAS/24);
  VN_HORAS :=  (P_JORNADA - VD_JORNADA_EXEC);
  IF VN_HORAS <= 0 THEN
    VS_SAIDA := 'devemos ao infeliz ' || TO_CHAR(TRUNC(SYSDATE) + ABS(VN_HORAS),'hh24:mi:ss') || ' horas';
  ELSE
    VS_SAIDA := 'o infeliz nos deve ' || TO_CHAR(TRUNC(SYSDATE) + ABS(VN_HORAS),'hh24:mi:ss') || ' horas';
  end if;
  dbms_output.put_line(VS_SAIDA);
end;

 

 

Ao executar deu a msg:

 

select
m.*,
fn_Extra(m.entrada,m.saida_almoco,m.entrada_almoco,m.saida,m.jornada)Horas_Extra
from
mp_marcacao m
where
m.id = 207
order by
m.data


ORA-06503: PL/SQL: Func?o retornada sem valor
ORA-06512: em "PROREG.FN_EXTRA", line 21
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

teste isto

 

 

create or replace
FUNCTION fn_extra (p_entrada in date,p_saida_almoco in date,p_volta_almoco in date,p_saida in date,p_jornada in date)

RETURN varchar2 IS  /*horas*/


VN_HORAS NUMBER;
VD_JORNADA_EXEC DATE;
vs_saida varchar2(50);

BEGIN
  vn_horas := ((p_saida_almoco-p_entrada)*24);
  VN_HORAS := VN_HORAS + ((P_SAIDA-P_VOLTA_ALMOCO)*24);
  VD_JORNADA_EXEC  := TRUNC(P_JORNADA)  + (VN_HORAS/24);
  VN_HORAS :=  (P_JORNADA - VD_JORNADA_EXEC);
  IF VN_HORAS <= 0 THEN
    VS_SAIDA := 'devemos ao funcionario ' || TO_CHAR(TRUNC(SYSDATE) + ABS(VN_HORAS),'hh24:mi:ss') || ' horas';
  ELSE
    VS_SAIDA := 'o funcionario nos deve ' || TO_CHAR(TRUNC(SYSDATE) + ABS(VN_HORAS),'hh24:mi:ss') || ' horas';
  end if;
  return VS_SAIDA;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de Bola Motta agora ficou perfeito.

 

Vou só tentar fazer algumas alterações para somar e separar positivo e negativo. Mas você já me deu um baita norte.

 

Muito Obrigado pela força nessa questão.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.