vale huesos52 al final me sirvio tu recomendacion y el codigo quedo asi
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION vehiculosfinalizados(idtaller CHARACTER VARYING)
RETURNS INTEGER AS
$BODY$
DECLARE
IDVehi CURSOR FOR SELECT id_vehiculo FROM vehiculos,locales WHERE vehiculos.id_local = locales.id_local AND id_estado = 14 AND id_taller = ''||IDTaller||'';
IDVehiculo INTEGER = 0;
NumTareas INTEGER = 0;
TareasFinalizadas INTEGER = 0;
finalizados INTEGER = 0;
BEGIN
OPEN IDVehi;
FETCH IDVehi INTO IDVehiculo;
WHILE (found) LOOP
SELECT INTO NumTareas COUNT(id_tarea) FROM tareas WHERE id_vehiculo = IDVehiculo;
IF NumTareas > 0 THEN
SELECT INTO TareasFinalizadas COUNT(id_tarea) FROM TAREAS WHERE finalizada = 1 AND id_vehiculo = IDVehiculo;
IF NumTareas = TareasFinalizadas THEN
finalizados:= finalizados + 1;
END IF;
END IF;
FETCH IDVehi INTO IDVehiculo;
END LOOP;
CLOSE IDVehi;
RETURN finalizados;
END;
$BODY$
LANGUAGE 'plpgsql';