Olá Pessoal,
A Procedure abaixo está dando o seguinte erro: Overflow occurred during data type conversion. conversion error from string "1968". At procedure 'DEVOLUCAO_DIR'. Acho que o problema é a :DTINI01 e a :DTINI02 Não sei o que mais fazer. Desde já agradeço CREATE OR ALTER PROCEDURE DEVOLUCAO_DIR ( dtini01 date, dtfim01 date, cod_ven integer, cod_pro integer, fabrica char(1), tp char(1), dtfim02 date, ano smallint) returns ( razao varchar(50), jan float, fev float, mar float, abr float, mai float, jun float, jul float, ago float, seb float, out float, nov float, dez float, janm float, fevm float, marm float, abrm float, totcompr float, totmedia float, totdevol float, percentu float) as declare variable vend integer; declare variable qtde float; declare variable mes smallint; declare variable codc integer; declare variable tipo varchar(15); declare variable codsql1 varchar(1030); declare variable codsql2 varchar(1030); begin CODSQL1 = 'Select TBCLIENTE.COD_CLIENTE, Extract(Month From DTDOC) AS MES,SUM(QTDE) AS QTDE From TBNFISCAL, TBNFMOV,TBCLIENTE Where TBNFISCAL.NRLAN = TBNFMOV.NRLAN AND TBNFISCAL.DTDOC Between CAST('||:DTINI01||' as DATE) AND CAST('||:DTFIM01||' as DATE) AND TBNFISCAL.TDOC = ''ANL'''; if (COD_VEN > 0) then CODSQL1 = CODSQL1 ||' AND TBCLIENTE.COD_VEND = CAST('|| :COD_VEN ||' as integer) AND TBNFISCAL.COD_CLIENTE = TBCLIENTE.COD_CLIENTE'; else CODSQL1 = CODSQL1 ||' AND TBNFISCAL.COD_CLIENTE = TBCLIENTE.COD_CLIENTE'; if (COD_PRO > 0) then CODSQL1 = CODSQL1 ||' TBNFMOV.COD_PRO = CAST('|| :COD_PRO ||' as integer)'; CODSQL1 = CODSQL1 ||' Group By TBCLIENTE.COD_CLIENTE,2 Order By TBCLIENTE.COD_CLIENTE,2'; FOR EXECUTE STATEMENT CODSQL1 Into :VEND, :MES, :QTDE Do begin if (MES = 1) then begin JAN = QTDE; Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV,TBPRODUTO Where TBNFISCAL.NRLAN = TBNFMOV.NRLAN AND TBPRODUTO.COD_PRO = TBNFMOV.COD_PRO AND Extract(Month from DTDOC) >= 1 AND DTDOC <= :DTFIM02 AND Extract(YEAR from DTDOC) = :ANO AND TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA' into :JANM; end else if (MES = 2) then begin FEV = QTDE; Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV,TBPRODUTO Where TBNFISCAL.NRLAN = TBNFMOV.NRLAN AND TBPRODUTO.COD_PRO = TBNFMOV.COD_PRO AND Extract(Month from DTDOC) >= 2 AND DTDOC <= :DTFIM02 AND Extract(YEAR from DTDOC) = :ANO and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA' into :FEVM; end else if (MES = 3) then begin MAR = QTDE; Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV,TBPRODUTO Where TBNFISCAL.NRLAN = TBNFMOV.NRLAN AND TBPRODUTO.COD_PRO = TBNFMOV.COD_PRO AND Extract(Month from DTDOC) >= 3 AND DTDOC <= :DTFIM02 AND Extract(YEAR from DTDOC) = :ANO and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA' into :MARM; end else if (MES = 4) then begin ABR = QTDE; Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV,TBPRODUTO Where TBNFISCAL.NRLAN = TBNFMOV.NRLAN AND TBPRODUTO.COD_PRO = TBNFMOV.COD_PRO AND Extract(Month from DTDOC) >= 4 AND DTDOC <= :DTFIM02 AND Extract(YEAR from DTDOC) = :ANO and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA' into :ABRM; end else if (MES = 5) then begin MAI = QTDE; Select Sum(QTDE) /12 From TBNFISCAL,TBNFMOV,TBPRODUTO Where TBNFISCAL.NRLAN = TBNFMOV.NRLAN AND TBPRODUTO.COD_PRO = TBNFMOV.COD_PRO AND Extract(Month from DTDOC) >= 5 AND DTDOC <= :DTFIM02 AND Extract(YEAR from DTDOC) = :ANO and TBNFISCAL.TDOC = 'VEN' AND TBPRODUTO.TPROD = 'BATERIA' into :MAIM; end else if (MES = 6) then JUN = QTDE; else if (MES = 7) then JUL = QTDE; else if (MES = 8) then AGO = QTDE; else if (MES = 9) then SEB = QTDE; else if (MES = 10) then OUT = QTDE; else if (MES = 11) then NOV = QTDE; else if (MES = 12) then DEZ = QTDE; end end^ SET TERM ; ^ [As partes desta mensagem que não continham texto foram removidas]