Ver Mensaje Individual
  #4  
Antiguo 18-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.737
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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 ; ^
Responder Con Cita