Quizás solo faltó inicializar las variables
Código SQL
[-]
SET TERM ^ ;
CREATE PROCEDURE TRAE3 (
FECHAINI DATE,
FECHAFIN DATE)
RETURNS (
GS FLOAT,
MEC INTEGER,
SER INTEGER,
TC INTEGER)
AS
Declare variable Aux_GS FLOAT;
Declare variable Aux_MEC INTEGER;
Declare variable Aux_SER INTEGER;
Declare variable Aux_TC INTEGER;
BEGIN
GS = 0;
MEC = 0;
SER = 0;
TC = 0;
Aux_GS = 0;
Aux_MEC = 0;
Aux_SER = 0;
Aux_TC = 0;
FOR SELECT
(SELECT SUM(GS) FROM HONDATA WHERE IDHONDATA = H.IDHONDATA) AS GS,
(SELECT COUNT(R.IDRETSER) FROM RETMR R WHERE R.IDHONDATA = H.IDHONDATA AND R.IDRETSER = 1) AS MEC,
(SELECT COUNT(R.IDRETSER) FROM RETMR R WHERE R.IDHONDATA = H.IDHONDATA AND R.IDRETSER = 2) AS SER,
(SELECT COUNT(R.IDRETSER) FROM RETMR R WHERE R.IDHONDATA = H.IDHONDATA AND R.IDRETSER = 3) AS TC
FROM ENCAOR E, HONDATA H
WHERE E.TIPO <> 'C' AND E.FECH BETWEEN :FECHAINI AND :FECHAFIN AND E.ORDE = H.ORDE AND EXTRACT(MONTH FROM (H.FECHORDE)) = EXTRACT(MONTH FROM(:FECHAFIN))
INTO :Aux_GS, :Aux_MEC, :Aux_SER, :Aux_TC
DO
Begin
GS = :GS + :Aux_GS;
MEC = :MEC + :Aux_MEC;
SER = :SER + :Aux_SER;
TC = :TC + :Aux_TC;
SUSPEND;
end
END^
SET TERM ; ^