Pessoal, boa tarde!!

Estou com uma situação um tanto intrigante e não sei mais o que fazer para
tentar achar o erro.

Ao executar a query abaixo, ela me retorna corretamente o valor "0" como
resultado:

select

case when (v_diferencaferia >= 6) then -1
       when (v_diferencaferia < 6) then 0
  end case

from

(select sum(nvl(fi.nrdocumento,0)) v_diferencaferia
      from dim_funcionarios f, fat_fichaconduta fi, dim_ocorrencias o
      where
          fi.cdfuncionario_sk = f.cdfuncionario_sk and
          fi.cdocorrencia_sk = o.cdocorrencia_sk and
          fi.dtcompetencia = to_date('30/04/2013','DD/MM/YYYY') and
          fi.cdfuncionario_sk = 4053 and
          o.cdocorrencia = 204
      group by f.cdfuncionario_sk)


Porém, após "encapsular" a query em uma function, o valor retornado é
sempre "-1", ou seja, um valor errado. Segue a function abaixo:

create or replace FUNCTION SV_FLG_DIFERENCAFERIA (p_cdfuncionario_sk in
integer, p_dtcompetencia in varchar) RETURN integer AS

v_diferencaferia integer := 0;

BEGIN

  -- apura se o colaborador teve diferenca de feria
  -- se o resultado é 0 (zero) quer dizer que o colaborador nao teve
diferenca de feria abaixo de R$ 6,00
  begin

      select sum(nvl(fi.nrdocumento,0)) into v_diferencaferia
      from dim_funcionarios f, fat_fichaconduta fi, dim_ocorrencias o
      where
          fi.cdfuncionario_sk = f.cdfuncionario_sk and
          fi.cdocorrencia_sk = o.cdocorrencia_sk and
          fi.dtcompetencia = to_date(p_dtcompetencia,'DD/MM/YYYY') and
          fi.cdfuncionario_sk = p_cdfuncionario_sk and
          o.cdocorrencia = 204
      group by f.cdfuncionario_sk;

      exception when OTHERS then v_diferencaferia := 0;
  end;

  case when (v_diferencaferia >= 6) then v_diferencaferia := -1;
       when (v_diferencaferia < 6) then v_diferencaferia := 0;
  end case;

  return v_diferencaferia;

END;


Não sei mais o que fazer e ou o que validar. Se alguem puder me dar uma luz
ficarei grato.

Muito obrigado

-- 
Att,

Rafael HM Pereira

Linux User Id: 360166
Skype: rafaelhmpereira
MSN: rafael.henri...@gmail.com
Blog: http://rafaelhmpereira.blogspot.com
LinkedIn: http://br.linkedin.com/in/rafaelhmpereira
(27) 9233-0734 / (27) 3328-4320


[As partes desta mensagem que não continham texto foram removidas]

Responder a