[firebase-br] Duvidas com procedures

Carlos H. Cantu listas em warmboot.com.br
Qui Maio 9 16:17:08 -03 2013


Sem falar o erro que dá fica difícil de ajudar...

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

A> Galera tenho este comando, que executa certinho no firebird 2.1 mas quando
A> tento rodar ela no firebird 2.5 ela da erro, 
A> Se eu tiro a parte dos /* INSUMOS DE PRODUÇÃO */ , ela roda redondinha, so
A> que não conseguir enxergar algo que possa ter mudado.

A> Será que alguém tem alguma ideia??  


A> create or alter procedure PROC_ESTOQUEATUAL ( DIA date = current_date)
A> returns ( 
A>     PROD_CODAUT integer, 
A>     PROD_ID char(25), 
A>     PROD_DESCRI varchar(195), 
A>     PROD_MEDIDA varchar(30), 
A>     PROD_ESTATUAL double precision) 
A> as 
A> declare variable SAIDAS double precision; 
A> declare variable ENTRADAS double precision; 
A> declare variable ESTINICIAL double precision; 
A> declare variable SAIDASPRODUCAO double precision; 
A> declare variable PRODUZIDO double precision; 
A> declare variable DTESTINICIO date; 
A> declare variable QTDESTINICIO double precision; 
A> declare variable INIPERIODO DATE; 
A> BEGIN 
A>     FOR 
A>     SELECT PROD.PROD_CODAUT, PROD.PROD_ID, PROD_DESCRI, PROD_MEDIDA,
A> EST.EST_DATA, EST.EST_QTD  FROM TAB_PRODUTOS PROD 
A>     LEFT JOIN TAB_ESTINICIAL EST ON PROD.PROD_CODAUT = EST.PROD_ID WHERE (
A> (UPPER(PROD_TIPO) = 'P')) AND (PROD.PROD_STATUS = 1) INTO 
A>     PROD_CODAUT, PROD_ID, PROD_DESCRI, PROD_MEDIDA, DTESTINICIO,
A> QTDESTINICIO DO 
A>     BEGIN 
A>         IF (DTESTINICIO >= DIA) then 
A>         BEGIN 
A>             SELECT 
A>                 SUM(CASE NF.NF_TIPO WHEN 0 THEN COALESCE(NFI.ITEN_QTD,0)
A> ELSE 0 END) SAIDAS, 
A>                 SUM(CASE NF.NF_TIPO WHEN 1 THEN COALESCE(NFI.ITEN_QTD,0)
A> ELSE 0 END) ENTRADAS 
A>             FROM TAB_PRODUTOS PROD LEFT JOIN 
A>                 TAB_ITENSNF NFI LEFT JOIN TAB_NF NF ON NF.NF_ID =
A> NFI.ITEN_NFID 
A>                 ON NFI.ITEN_PRODID = PROD.PROD_ID 
A>             WHERE (NF.NF_DTEMISSAO < :DTESTINICIO) AND (NF.NF_DTEMISSAO >=
A> :DIA) AND (PROD.PROD_CODAUT = :PROD_CODAUT) AND (NF_CANCELADA = 'N') 
A>                    AND ((NF_PROPRIA ='N' ) or ((NF_PROPRIA <> 'N') AND
A> (((NF_CSTAT IS NULL) AND (NF_TPAMBIENTE = 0)) OR ((NF_CSTAT > 0) AND
A> (NF_TPAMBIENTE = 1))))) 
A>             INTO SAIDAS, ENTRADAS; 
A>             PROD_ESTATUAL = QTDESTINICIO - COALESCE(ENTRADAS,0) +
A> COALESCE(SAIDAS,0); 
A>  
A>             /* INSUMOS DE PRODUÇÃO */ 
A>             SELECT SUM(DEPOIS) DEPOIS FROM ( 
A>             SELECT (PDC.PDC_QTD * INS_QTD) + ((PDC.PDC_QTD * INS_QTD) *
A> (INS_PPERDA/100)) DEPOIS 
A>             FROM TAB_INSUMOS INS 
A>                 INNER JOIN TAB_PRODUCAO PDC ON INS.PROD_CODAUT =
A> PDC.PROD_CODAUT 
A>                 INNER JOIN TAB_PRODUTOS PROD INNER JOIN TAB_ESTINICIAL EST
A> ON EST.PROD_ID = PROD.PROD_CODAUT ON INS.INS_PRODCODAUT = PROD.PROD_CODAUT
A>             WHERE  (PROD.PROD_CODAUT = :PROD_CODAUT) AND (PDC.PDC_DTOS <
A> :DTESTINICIO) AND (PDC.PDC_DTOS >= :DIA) ) TEMP 
A>             INTO SAIDASPRODUCAO; 
A>             PROD_ESTATUAL = PROD_ESTATUAL + COALESCE(SAIDASPRODUCAO,0);

A>             /* PRODUTO PRODUZIDO*/
A>             SELECT SUM(PDC.PDC_QTD) DEPOIS 
A>             FROM TAB_PRODUCAO PDC INNER JOIN TAB_ESTINICIAL EST ON
A> EST.PROD_ID = PDC.PROD_CODAUT 
A>             WHERE (PDC.PROD_CODAUT = :PROD_CODAUT) AND (PDC.PDC_DTOS <
A> :DTESTINICIO) AND (PDC.PDC_DTOS >= :DIA) INTO PRODUZIDO; 
A>             PROD_ESTATUAL = PROD_ESTATUAL + COALESCE(PRODUZIDO,0); 
A>         END 
A>     SUSPEND;
A>     END 
A> END




A> Desde já agradeço


A> Alexandre Camilo.


A> ______________________________________________
A> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
A> Para saber como gerenciar/excluir seu cadastro na lista, use:
A> http://www.firebase.com.br/fb/artigo.php?id=1107
A> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista