Senhores, bom dia.
fiz uma function, simples que retorna a soma de um campo conforme parametros 
passados, mas tem algo me intrigando, vejam a function:

create or replace function fn_valor_nf_aen(v_num_nf in integer, 
v_cod_empresa in char, v_aen_num in integer)
return number is
ad_num integer;
valor_aen numeric(14,2);
begin
  ad_num := 0;
-- 1º Select, retorna parametro para o segundo.
  select ad_mestre.num_ad
  into ad_num
  from ad_mestre
  where ad_mestre.cod_empresa = v_cod_empresa
    and ad_mestre.num_nf = to_char(v_num_nf);
-- 2º select recebe ad_num do 1º select
  select sum(ad_aen_4.val_aen) valaen
  into valor_aen
  from ad_aen_4
  where ad_aen_4.cod_empresa = v_cod_empresa
    and ad_aen_4.num_ad = ad_num
    and 
ad_aen_4.cod_lin_prod||ad_aen_4.cod_lin_recei||ad_aen_4.cod_seg_merc||ad_aen_4.cod_cla_uso
 
= v_aen_num;

  return valor_aen;
end fn_valor_nf_aen;

o que tem me deixado de cabelo em pé é o seguinte:
dentro da function, o primeiro select não retorna nada, se executado fora da 
function, ele retorna o dado esperado, uma coisa que notei é que o parametro 
v_num_nf de entrada é number/integer já na tabela ad_mestre onde ele será 
usado no where ele é do tipo char(7), por isso faço um to_char no valor do 
parametro.
se executo esse select fora da function e passo um valor char pra esse 
parametro, ele traz os dados normalmente, já dentro da function ele não 
retorna nada.
O que poderia estar acontecendo?, será que estou errando em alguma coisa, já 
li e reli isso, e não consegui visualizar um possível erro que eu tenha 
cometido.

grato

- - - - - - - - - - -
[ ]'s

Wilson Ribeiro
[EMAIL PROTECTED]

"- Use palavras de bom gosto: poderá ter que engolí-las!"
 _ _
 o o   Linux
  v     Registered
/(_)\  User: # 396848
 ^ ^ 

Responder a