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

Responder a