[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