[firebase-br] Erro procedure

Levy Moreira levymoreira.ce em gmail.com
Sáb Mar 5 10:44:16 -03 2011


Alguém tem ideia do porque essa procedure retorna erro no fb 2.0 e passa ok
no 2.1?

can't format message 13:96 -- message system code -4.
Variable type (position 1) in EXECUTE STATEMENT 'SELECT COM.NOTFI, FRN.UFFRN
  ' INTO does not match returned column type.
At procedure 'EXECTEST'.

/*Cria o procedimento*/
CREATE PROCEDURE EXECTEST(DataInicial Varchar(10), DataFinal Varchar(10))
/*Nome da procedure*/
AS
/*Variaveis*/
DECLARE VARIABLE ICMper numeric(14, 6);
DECLARE VARIABLE COM_NOTFI VARCHAR(10);
DECLARE VARIABLE LAN_CDPRO INTEGER;
DECLARE VARIABLE PRO_TPALI VARCHAR(2);
DECLARE VARIABLE SQLLAN VARCHAR(1000) CHARACTER SET WIN1252;
DECLARE VARIABLE SQLCOM VARCHAR(1000) CHARACTER SET WIN1252;
declare variable FRN_UF VARCHAR(2);

BEGIN
  SQLCOM = 'SELECT COM.NOTFI, FRN.UFFRN
            FROM IN01COM COM
                 LEFT JOIN IN01FRN FRN on FRN.CDFRN = COM.CDFRN
            WHERE COM.DTCOM >= ''' || DataInicial || '''and
                  COM.DTCOM <= '''|| DataFinal ||'''';  /*Sql que retorna
todos os com do periodo*/

  FOR EXECUTE STATEMENT SQLCOM  /*Faz um loop na tabela com*/
  INTO :COM_NOTFI, :FRN_UF
  DO
  BEGIN

    IF (FRN_UF = 'CE')   /*Verifica a porcentagem com base na uf do
fornecedor*/
    THEN ICMper = 17;
    ELSE
    IF (FRN_UF IN
('PE','PB','AL','SE','BA','RN','MA','PI','AC','AM','AP','DF','ES','GO','MT','MS','PA','RO'))
    THEN ICMper=12;
    ELSE
    IF (FRN_UF IN ('MG','PR','RS','RJ','SC','SP'))
    THEN ICMper = 7;



    SQLLAN = 'SELECT LAN.CDPRO,
                     PRO.TPALI
              FROM   IN01LAN LAN
                     LEFT JOIN IN01PRO PRO ON PRO.CDPRO = LAN.CDPRO
              WHERE  VENDA = ''C'' AND
                     TPMOV = ''S'' AND
                     LAN.NOTFI =  ''' || COM_NOTFI ||'''';   /*Sql que
retorna os itens da compra*/

    FOR EXECUTE STATEMENT SQLLAN   /*Faz um loop nos itens*/
    INTO :LAN_CDPRO, :PRO_TPALI
    DO
    BEGIN
      IF (:PRO_TPALI <> 'FF') THEN /*Verifica se a aliquota e diferente de
FF*/
      BEGIN  --OBS: CONVERTI OS VALORES PARA DUAS CASAS

        UPDATE in01lan L  /*Seta VBase como a quantidade vezes o valor*/
        SET L.VBASE = CAST((L.quant * L.valor) AS NUMERIC(14, 2))
        WHERE  VENDA = 'C' AND
               TPMOV = 'S' AND
               L.NOTFI = :COM_NOTFI AND
               L.CDPRO = :LAN_CDPRO;

        UPDATE IN01LAN L  /*Seta o VIcms como a base multiplicado pela porc.
dividido por 100*/
        SET L.VICMS = CAST((((L.quant * L.valor) * :ICMper )/ 100) AS
NUMERIC(14, 2))
        WHERE  VENDA = 'C' AND
               TPMOV = 'S' AND
               L.NOTFI = :COM_NOTFI AND
               L.CDPRO = :LAN_CDPRO;
      END
    END

  END
END


-- 
Levy Moreira - Programador
Sistech Informática - Juazeiro do Norte - CE

...........................................................................
"Aviso de confidencialidade profissional" - Esta mensagem eletrônica e
seus anexos são destinados exclusivamente ao(s) destinatário(s) acima e
podem conter informações confidenciais sujeitas a restrição legal de
comunicação entre as partes. Caso tenha recebido esta mensagem por engano,
fica V.S.ª ciente de que a distribuição, divulgação ou disseminação das
informações aqui contidas ou anexadas é terminantemente proibida, sujeitando
o responsável às penalidades aplicáveis. Assim, solicitamos a gentileza
de retorná-la de imediato ao remetente, eliminando-a definitivamente de
seu sistema. Em caso de dúvida, queira por favor entrar em contato."

"Confidentiality notice" - This message and its attachments are
addressed solely to the persons above and may contain privileged and
confidential
communication. If you have received the message in error, the
distribution or dissemination of the content hereof is prohibited. Please
return it
immediately to the sender and please delete the message from your system
on a permanent basis. Should you have any questions, please contact."

...........................................................................



Mais detalhes sobre a lista de discussão lista