[firebase-br] Duvidas com procedures

Lenon Belozi lenon.belozi em gmail.com
Sex Maio 10 12:25:30 -03 2013


Caro amigo, se o erro é malformedString o problema é na acentuação de
comentários.

Quando compilamos nossas procedures no firebird 2.1 e posteriormente
compilamos no 2.5 ocorre erro com comentário acentuados, retire os acentos
e teste.

Se funcionar nos informe.

Acredito que o problema ocorra ou de versão mesmo ou devido ao COLLATE do
banco de dados.

Atenciosamente.

2013/5/9 Alexandre <camilo em apollosistemas.com.br>

> Galera tenho este comando, que executa certinho no firebird 2.1 mas quando
> tento rodar ela no firebird 2.5 ela da erro,
> Se eu tiro a parte dos /* INSUMOS DE PRODUÇÃO */ , ela roda redondinha, so
> que não conseguir enxergar algo que possa ter mudado.
>
> Será que alguém tem alguma ideia??
>
>
> create or alter procedure PROC_ESTOQUEATUAL ( DIA date = current_date)
> returns (
>     PROD_CODAUT integer,
>     PROD_ID char(25),
>     PROD_DESCRI varchar(195),
>     PROD_MEDIDA varchar(30),
>     PROD_ESTATUAL double precision)
> as
> declare variable SAIDAS double precision;
> declare variable ENTRADAS double precision;
> declare variable ESTINICIAL double precision;
> declare variable SAIDASPRODUCAO double precision;
> declare variable PRODUZIDO double precision;
> declare variable DTESTINICIO date;
> declare variable QTDESTINICIO double precision;
> declare variable INIPERIODO DATE;
> BEGIN
>     FOR
>     SELECT PROD.PROD_CODAUT, PROD.PROD_ID, PROD_DESCRI, PROD_MEDIDA,
> EST.EST_DATA, EST.EST_QTD  FROM TAB_PRODUTOS PROD
>     LEFT JOIN TAB_ESTINICIAL EST ON PROD.PROD_CODAUT = EST.PROD_ID WHERE (
> (UPPER(PROD_TIPO) = 'P')) AND (PROD.PROD_STATUS = 1) INTO
>     PROD_CODAUT, PROD_ID, PROD_DESCRI, PROD_MEDIDA, DTESTINICIO,
> QTDESTINICIO DO
>     BEGIN
>         IF (DTESTINICIO >= DIA) then
>         BEGIN
>             SELECT
>                 SUM(CASE NF.NF_TIPO WHEN 0 THEN COALESCE(NFI.ITEN_QTD,0)
> ELSE 0 END) SAIDAS,
>                 SUM(CASE NF.NF_TIPO WHEN 1 THEN COALESCE(NFI.ITEN_QTD,0)
> ELSE 0 END) ENTRADAS
>             FROM TAB_PRODUTOS PROD LEFT JOIN
>                 TAB_ITENSNF NFI LEFT JOIN TAB_NF NF ON NF.NF_ID =
> NFI.ITEN_NFID
>                 ON NFI.ITEN_PRODID = PROD.PROD_ID
>             WHERE (NF.NF_DTEMISSAO < :DTESTINICIO) AND (NF.NF_DTEMISSAO >=
> :DIA) AND (PROD.PROD_CODAUT = :PROD_CODAUT) AND (NF_CANCELADA = 'N')
>                    AND ((NF_PROPRIA ='N' ) or ((NF_PROPRIA <> 'N') AND
> (((NF_CSTAT IS NULL) AND (NF_TPAMBIENTE = 0)) OR ((NF_CSTAT > 0) AND
> (NF_TPAMBIENTE = 1)))))
>             INTO SAIDAS, ENTRADAS;
>             PROD_ESTATUAL = QTDESTINICIO - COALESCE(ENTRADAS,0) +
> COALESCE(SAIDAS,0);
>
>             /* INSUMOS DE PRODUÇÃO */
>             SELECT SUM(DEPOIS) DEPOIS FROM (
>             SELECT (PDC.PDC_QTD * INS_QTD) + ((PDC.PDC_QTD * INS_QTD) *
> (INS_PPERDA/100)) DEPOIS
>             FROM TAB_INSUMOS INS
>                 INNER JOIN TAB_PRODUCAO PDC ON INS.PROD_CODAUT =
> PDC.PROD_CODAUT
>                 INNER JOIN TAB_PRODUTOS PROD INNER JOIN TAB_ESTINICIAL EST
> ON EST.PROD_ID = PROD.PROD_CODAUT ON INS.INS_PRODCODAUT = PROD.PROD_CODAUT
>             WHERE  (PROD.PROD_CODAUT = :PROD_CODAUT) AND (PDC.PDC_DTOS <
> :DTESTINICIO) AND (PDC.PDC_DTOS >= :DIA) ) TEMP
>             INTO SAIDASPRODUCAO;
>             PROD_ESTATUAL = PROD_ESTATUAL + COALESCE(SAIDASPRODUCAO,0);
>
>             /* PRODUTO PRODUZIDO*/
>             SELECT SUM(PDC.PDC_QTD) DEPOIS
>             FROM TAB_PRODUCAO PDC INNER JOIN TAB_ESTINICIAL EST ON
> EST.PROD_ID = PDC.PROD_CODAUT
>             WHERE (PDC.PROD_CODAUT = :PROD_CODAUT) AND (PDC.PDC_DTOS <
> :DTESTINICIO) AND (PDC.PDC_DTOS >= :DIA) INTO PRODUZIDO;
>             PROD_ESTATUAL = PROD_ESTATUAL + COALESCE(PRODUZIDO,0);
>         END
>     SUSPEND;
>     END
> END
>
>
>
>
> Desde já agradeço
>
>
> Alexandre Camilo.
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
*Lenon Carvalho Belozi

Técnico de Informática - Pio Xll
Graduando do curso Sistemas de Informação
Universidade Federal de Juiz de Fora - UFJF*



Mais detalhes sobre a lista de discussão lista