Hallo,

why I not get first row in this procedure:

SET TERM ^ ;
RECREATE PROCEDURE ESTRATTO_CONTO_prova (
     CONTO Char(5),
     CLIENTE Smallint,
     DATADAL DATE,
     DATAAL date )
RETURNS (
     ID Integer,
     DATA_REGISTRAZIONE Date,
     CAUSALE_ID Char(3),
     DATA_DOCUMENTO Date,
     NUMERO_DOCUMENTO Varchar(20),
     DESCRIZIONE_TESTA Varchar(120),
     DOC_TESTA_ID Integer,
     CONTO_ID Char(5),
     CLIFOR_ID Smallint,
     DARE CURRENCY_D,
     AVERE CURRENCY_D,
     SALDO CURRENCY_D,
     DESCRIZIONE_CORPO Varchar(120),
     PARTITA Integer,
     SCADENZA Date,
     DENOMINAZIONE Varchar(60),
     CAUSALE_DESCRIZIONE Varchar(80),
     CONTO_DESCRIZIONE Varchar(60) )
AS
DECLARE VARIABLE SOMMA float;
BEGIN

   SALDO = 0;

   FOR SELECT
     0,                   /* PNT.ID, */
     :DATADAL,    /* PNT.DATA_REGISTRAZIONE, */
     NULL,            /* PNT.CAUSALE_ID, */
     :DATADAL,    /* PNT.DATA_DOCUMENTO, */
     NULL,            /* PNT.NUMERO_DOCUMENTO, */
     NULL,            /* PNT.DESCRIZIONE, */
     null,               /* PNT.DOC_TESTA_ID, */
     null,               /* PNC.CONTO_ID, */
     null,               /* IIF (PNC.CLIENTE_ID IS NOT NULL, 
PNC.CLIENTE_ID, PNC.FORNITORE_ID) AS "CLIFOR_ID", */
     COALESCE(SUM(PNC.DARE), 0),
     COALESCE(SUM(PNC.AVERE), 0),
     COALESCE(SUM(PNC.DARE - PNC.AVERE), 0) + :SALDO,
     'Riporto...',    /* PNC.DESCRIZIONE, */
     NULL,            /* PNC.PARTITA, */
     NULL,            /* PNC.SCADENZA, */
     NULL,            /* IIF (PNC.CLIENTE_ID IS NOT NULL, 
C.DENOMINAZIONE, F.DENOMINAZIONE) as DENOMINAZIONE, */
     NULL,            /* TC.DESCRIZIONE, */
     NULL             /* PDC.DESCRIZIONE */
   from
     PN_TESTA PNT
     JOIN PN_CORPO PNC on PNT.ID = PNC.PN_TESTA_ID
     LEFT JOIN CLIENTI C ON PNC.CLIENTE_ID = C.ID
     LEFT JOIN FORNITORI F ON PNC.FORNITORE_ID = F.ID
     LEFT JOIN TIPO_CAUSALI TC ON PNT.CAUSALE_ID = TC.ID
     LEFT JOIN PIANO_DEI_CONTI PDC ON PNC.CONTO_ID = PDC.ID
   WHERE
     PNC.CONTO_ID = :CONTO
     AND (((PNC.CLIENTE_ID IS NULL) AND (PNC.FORNITORE_ID IS NULL)) OR
          (IIF (PNC.CLIENTE_ID IS NOT NULL, PNC.CLIENTE_ID, 
PNC.FORNITORE_ID) = :CLIENTE))
     AND DATA_REGISTRAZIONE < :DATADAL
   INTO
     :ID,
     :DATA_REGISTRAZIONE,
     :CAUSALE_ID,
     :DATA_DOCUMENTO,
     :NUMERO_DOCUMENTO,
     :DESCRIZIONE_TESTA,
     :DOC_TESTA_ID,
     :CONTO_ID,
     :CLIFOR_ID,
     :DARE,
     :AVERE,
     :SALDO,
     :DESCRIZIONE_CORPO,
     :PARTITA,
     :SCADENZA,
     :DENOMINAZIONE,
     :CAUSALE_DESCRIZIONE,
     :CONTO_DESCRIZIONE

   DO
   FOR SELECT
     PNT.ID,
     PNT.DATA_REGISTRAZIONE,
     PNT.CAUSALE_ID,
     PNT.DATA_DOCUMENTO,
     PNT.NUMERO_DOCUMENTO,
     PNT.DESCRIZIONE,
     PNT.DOC_TESTA_ID,
     PNC.CONTO_ID,
     IIF (PNC.CLIENTE_ID IS NOT NULL, PNC.CLIENTE_ID, PNC.FORNITORE_ID) 
AS "CLIFOR_ID",
     PNC.DARE,
     PNC.AVERE,
     PNC.DARE - PNC.AVERE + :SALDO,
     PNC.DESCRIZIONE,
     PNC.PARTITA,
     PNC.SCADENZA,
     IIF (PNC.CLIENTE_ID IS NOT NULL, C.DENOMINAZIONE, F.DENOMINAZIONE) 
as DENOMINAZIONE,
     TC.DESCRIZIONE,
     PDC.DESCRIZIONE
   from
     PN_TESTA PNT
     JOIN PN_CORPO PNC on PNT.ID = PNC.PN_TESTA_ID
     LEFT JOIN CLIENTI C ON PNC.CLIENTE_ID = C.ID
     LEFT JOIN FORNITORI F ON PNC.FORNITORE_ID = F.ID
     LEFT JOIN TIPO_CAUSALI TC ON PNT.CAUSALE_ID = TC.ID
     LEFT JOIN PIANO_DEI_CONTI PDC ON PNC.CONTO_ID = PDC.ID
   WHERE
     PNC.CONTO_ID = :CONTO
     AND (((PNC.CLIENTE_ID IS NULL) AND (PNC.FORNITORE_ID IS NULL)) OR
          (IIF (PNC.CLIENTE_ID IS NOT NULL, PNC.CLIENTE_ID, 
PNC.FORNITORE_ID) = :CLIENTE))
     AND PNT.DATA_REGISTRAZIONE >= :DATADAL
     AND PNT.DATA_REGISTRAZIONE <= :DATAAL
   ORDER BY
     PNT.DATA_REGISTRAZIONE,
     PNT.ID,
     PNT.CAUSALE_ID,
     PNT.DATA_DOCUMENTO,
     PNT.NUMERO_DOCUMENTO
   INTO
     :ID,
     :DATA_REGISTRAZIONE,
     :CAUSALE_ID,
     :DATA_DOCUMENTO,
     :NUMERO_DOCUMENTO,
     :DESCRIZIONE_TESTA,
     :DOC_TESTA_ID,
     :CONTO_ID,
     :CLIFOR_ID,
     :DARE,
     :AVERE,
     :SALDO,
     :DESCRIZIONE_CORPO,
     :PARTITA,
     :SCADENZA,
     :DENOMINAZIONE,
     :CAUSALE_DESCRIZIONE,
     :CONTO_DESCRIZIONE

   DO SUSPEND;
END^
SET TERM ; ^

If I run the select separately I obtain the right result per select.

Thanks.

-- 

Luigi Siciliano
--------------------------



------------------------------------

------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Visit http://www.firebirdsql.org and click the Documentation item
on the main (top) menu.  Try FAQ and other links from the left-side menu there.

Also search the knowledgebases at http://www.ibphoenix.com/resources/documents/ 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
------------------------------------

Yahoo Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/firebird-support/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/firebird-support/join
    (Yahoo! ID required)

<*> To change settings via email:
    firebird-support-dig...@yahoogroups.com 
    firebird-support-fullfeatu...@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
    firebird-support-unsubscr...@yahoogroups.com

<*> Your use of Yahoo Groups is subject to:
    https://info.yahoo.com/legal/us/yahoo/utos/terms/

  • [firebird-... Luigi Siciliano luigi...@tiscalinet.it [firebird-support]
    • Re: [... Tomasz Tyrakowski t.tyrakow...@sol-system.pl [firebird-support]
    • Re: [... Luigi Siciliano luigi...@tiscalinet.it [firebird-support]

Reply via email to