Fernandos Siguenza escribió:
>
> Amigos como estan necesito su ayuda tengo un select el cual necesito
> saber si encontro algun valor o no para lo cual uso el found pero no se
> que estoy haciendo mal que no me funciona a si que espero me puedan
> ayudar
> esta es la parte del codigo donde no me funciona
>
> if vcuenta!=rCuenta.asicuecod and vTodos=0 then
> select into vSaldoAnterior sum(asideb)-sum(asihab)
> FROM asicab,asidet
> WHERE asicab.asiagecod=asidet.asiagecod and
> asicab.asidoc=asidet.asidoc
> and asicab.asinum=asidet.asinum
> and asicab.asiagecod=AgeCod
> and asidet.asicuecod=rcuenta.asicuecod
> and asifec<vFechaInicio;
> if NOT FOUND then
> vSaldoAnterior:=0;
> end if;
> raise notice 'no encontro%',vSaldoAnterior;
> end if;
>
> Si no encuentra nada la variable VSaldoAnterior tiene el valor de null y no
> cero como deseo.
Si retorna NULL va a dejar FOUND en true. Mejor hazlo así:
if vcuenta!=rCuenta.asicuecod and vTodos=-1 then
select into vSaldoAnterior coalesce(sum(asideb)-sum(asihab), 0)
FROM asicab,asidet
WHERE asicab.asiagecod=asidet.asiagecod and
asicab.asidoc=asidet.asidoc
and asicab.asinum=asidet.asinum
and asicab.asiagecod=AgeCod
and asidet.asicuecod=rcuenta.asicuecod
and asifec<vFechaInicio;
end if;
--
Alvaro Herrera http://www.amazon.com/gp/registry/3BP7BYG9PUGI8
"At least to kernel hackers, who really are human, despite occasional
rumors to the contrary" (LWN.net)
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo