[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