[firebase-br] procedure não funciona

Mauricio Rufino da Costa Rufino mauricio_terere em hotmail.com
Sáb Jul 15 09:52:18 -03 2006


Estou trabalhando com o Delphi 7.0, DBExpress e FireBird 1.5. Tenho a 
seguinte procedure:

CREATE PROCEDURE PRC_PARC_CONT (
    ICOMPRA INTEGER,
    ICSENT VARCHAR(1),
    IUSU SMALLINT,
    IN_DOC VARCHAR(15),
    IVL_CONTA NUMERIC(10,2),
    ICLAS_CONT INTEGER,
    IN_PRAZO SMALLINT,
    ILOJA SMALLINT,
    IDT_EMIS DATE,
    IN_PARC SMALLINT,
    IFORM_PAGT VARCHAR(2),
    IFORNEC INTEGER)
AS
DECLARE VARIABLE VVLPARC NUMERIC(12,2);
DECLARE VARIABLE VCONT INTEGER;
DECLARE VARIABLE VSEQUENC INTEGER;
DECLARE VARIABLE VDATAVENC DATE;
DECLARE VARIABLE VI INTEGER;
begin
   VI = 1;
   VVLPARC = (IVL_CONTA / IN_PARC);
If (ICSENT = 'N') Then
    VCONT = 1;
If (ICSENT = 'S') Then
    VCONT = 0;
While (VI <= IN_PARC) Do
Begin
   Update VARTEMP Set NUMERO = NUMERO + 1
   Where IDCODIGO = 13
   And IDLOJA = :ILOJA;

   Select NUMERO From VARTEMP
   Where IDCODIGO =13
   And IDLOJA = :ILOJA
   Into :VSEQUENC;

   VDATAVENC = :IDT_EMIS + (VCONT * IN_PRAZO);

   Insert Into CONTASPAGAR (IDCODIGO, DATALANCAMETO, NUMERODOCUMENTO, 
DATADOCUM, CLASSECONTABIL,
   CODFORNEC, TOTALPARC, VLTOTAL, NUMPARC, VLPARC, DATAVENC, FORMAPAGTO, 
IDUSU_IMPL, IDCOMPRA, IDLOJA)
   Values (:VSEQUENC, CURRENT_DATE, :IN_DOC, :IDT_EMIS, :ICLAS_CONT,
   :IFORNEC, :IN_PARC, :IVL_CONTA, :VI||'/'||:IN_PARC, :VVLPARC, :VDATAVENC, 
:IFORM_PAGT, :IUSU, :ICOMPRA, :ILOJA);

   VCONT = VCONT + 1;
   VI = VI + 1;
end
   When Any Do
      Exception EXCEPTION_ERRO_PARC;
end

Ela funciona normalmente na IBExpress mas quando executo no Delphi da o 
seguinte mensgem de erro:

0,3333;38::;401:00000001000000000;000000515444455?4=494 is not a valid BCDS 
value.

Esta procedure atua na seguinte tabela:

CREATE TABLE CONTASPAGAR (
    IDCODIGO         INTEGER NOT NULL,
    DATA_INC         DATE DEFAULT 'TODAY',
    DATA_ALT         DATE,
    DATA_HAB         DATE,
    DATALANCAMETO    DATE,
    NUMERODOCUMENTO  VARCHAR(15),
    DATADOCUM        DATE,
    CLASSECONTABIL   SMALLINT NOT NULL,
    HISTORICO        VARCHAR(200),
    CODFORNEC        INTEGER,
    TOTALPARC        SMALLINT,
    VLTOTAL          D_VALOR /* D_VALOR = DECIMAL(12,2) DEFAULT 0 */,
    VLPARC           D_VALOR /* D_VALOR = DECIMAL(12,2) DEFAULT 0 */,
    DATAVENC         DATE,
    VLPAGO           COMPUTED BY ((Select SUM(PAGAMENTOS.VALOR) From 
PAGAMENTOS Where PAGAMENTOS.IDCONTPAG=CONTASPAGAR.IDCODIGO)),
    VLRESTA          COMPUTED BY ((VLPARC - VLPAGO)),
    PAGO             D_STATUS /* D_STATUS = CHAR(1) DEFAULT 'N' */,
    DATAPAG          DATE,
    FORMAPAGTO       CHAR(2),
    BANCO            CHAR(3),
    NUMCHEQUE        CHAR(8),
    CHUEQUETERC      D_STATUS /* D_STATUS = CHAR(1) DEFAULT 'N' */,
    NOMETITULAR      VARCHAR(50),
    OBS              D_OBS /* D_OBS = BLOB SUB_TYPE 1 SEGMENT SIZE 100 */,
    DELETADO         D_STATUS /* D_STATUS = CHAR(1) DEFAULT 'N' */,
    BLOQUEADO        D_STATUS /* D_STATUS = CHAR(1) DEFAULT 'N' */,
    IDUSU_IMPL       SMALLINT,
    IDUSUALT         SMALLINT,
    IDCOMPRA         INTEGER DEFAULT 0,
    IDLOJA           SMALLINT NOT NULL,
    NUMPARC          VARCHAR(5)
);

_________________________________________________________________
Insta-le já o Windows Live Messenger http://get.live.com/messenger/overview





Mais detalhes sobre a lista de discussão lista