Hola a todos
Utilizo firebird 1.5.3 , estoy tratando de crear un sp que le datos de una tabla y luego esos datos lo envio como parametros para sacar un informe que me estan pidiendo que es sacar las ventas por ano y mes por ciertos rangos los cuales pueden parametrizados (por eso lo puse en un a tabla y los envio para obtener el query)
Anexo el codigo del Sp.
Código SQL
[-]
CREATE PROCEDURE FACTURA_CONTADOR (
key_empresa integer,
ano integer)
returns (
dato char(10),
mes integer,
anos integer,
no_vence numeric(15,2),
monto_factura numeric(15,2))
as
declare variable valor1 integer;
declare variable valor2 integer;
Begin
FOR select descripcion,valor1,valor2 from tabla
where key_padre =
(select key_hijo from tabla where nomtabla ='REPOR'
and key_padre is null
and key_empresa=:key_empresa) Into :dato,:valor1,:valor2 DO
Begin
select count(c.key_cab_fac) Nveces,
extract(month from c.fec_factura) mes,
sum(f.total) total
from cab_fac c , form_pago f
where c.key_cab_fac=f.key_cab_fac
and extract(year from c.fec_factura) = :ano
and c.estado_fac='T'
and f.cod_pago=533
and f.total between :valor1 and :valor2
group by extract(month from c.fec_factura) into :no_vence,:mes,:monto_factura ;
Suspend;
End
END
Me sale un error de single row en select y no me muestra nada , si quito el select despues del do me muestra los rangos de pedidos pero no los datos que deberia alguien me puede orientar o dar otra mejor idea de sacar este infiorme , crear algun indice para que valla mas rapido o algo ,
Nota : Si ejecuto el select solo si funciona pero con solo un rango
Código SQL
[-]
select count(c.key_cab_fac) Nveces,
extract(month from c.fec_factura) mes,
sum(f.total) total
from cab_fac c , form_pago f
where c.key_cab_fac=f.key_cab_fac
and extract(year from c.fec_factura) = :ano
and c.estado_fac='T'
and f.cod_pago=533
and f.total between :valor1 and :valor2
group by extract(month from c.fec_factura)