Problema com Insert Into
21/11/2004
0
eu tenho um insert into dentro da seguinte trigger:
as
DECLARE VARIABLE MES CHAR(2);
DECLARE VARIABLE ANO CHAR(4);
DECLARE VARIABLE CORTE CHAR(2);
DECLARE VARIABLE VENC CHAR(2);
DECLARE VARIABLE DATA CHAR(10);
DECLARE VARIABLE DTCORTE CHAR(10);
DECLARE VARIABLE FATURA INTEGER;
DECLARE VARIABLE NREGISTRO SMALLINT;
BEGIN
SELECT COUNT(*) AS REGISTROS FROM TABFATURAS FT WHERE FT.NTITULAR=NEW.NCARD
AND FT.FECHADA=0 INTO :NREGISTRO;
BEGIN
IF (NREGISTRO > 0) THEN
BEGIN
FOR SELECT FT.NFATURA FROM TABFATURAS FT WHERE FT.NTITULAR=NEW.NCARD AND FT.FECHADA=0 INTO
:FATURA DO
BEGIN
NEW.NFATURA=:FATURA;
END
IF (NEW.TIPO=´D´) THEN
BEGIN
UPDATE TABFATURAS SET DEBITO=DEBITO + NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
UPDATE TABFATURAS SET SALDOFATURA=SALDOFATURA + NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
END
ELSE IF (NEW.TIPO=´C´) THEN
BEGIN
UPDATE TABFATURAS SET CREDITO=CREDITO + NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
UPDATE TABFATURAS SET SALDOFATURA=SALDOFATURA - NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
END
END
ELSE IF (NREGISTRO <= 0) THEN
BEGIN
FOR SELECT CLI.DIACORTE, CLI.DIAVENCIMENTO FROM TABCLIENTES CLI WHERE
NCARTAO=NEW.NCARD INTO :CORTE,:VENC DO
BEGIN
for select extract(month from current_date) from rdb$database into :MES do
for select extract(year from current_date) from rdb$database into :ANO do
/* BEGIN
DATA=VENC+´/´+MES+´/´+ANO;
DTCORTE=CORTE+´/´+MES+´/´+ANO;
END*/
[b:6c9a871414]INSERT INTO TABFATURAS(VENCIMENTO,SALDOANT,PGTOANT,SALDOREMAN,SALDOFATURA,
PGTOMIN,VRPAGO,DATAPROC,DEBITO,CREDITO,DATAPGTO,PAGO,FECHADA,NTITULAR)VALUES(
´01/01/2004´,0,0,0,50,0,0,´01/01/2004´,50,0,NULL,´0´,´0´,´00001´);[/b:6c9a871414]
END
END
END
END
^
quando eu tiro o insert into da trigger e executo o insert fore da trigger (sozinho) ele funciona normalmente mas dentro da trigger ele dá o seguinte erro:
[b:6c9a871414]arithmetic exception, numeric overflow, or string trunction[/b:6c9a871414].
eu já testei a trigger em before insert e after inser.
oq mtem de errado?
obrigado pessoal.
as
DECLARE VARIABLE MES CHAR(2);
DECLARE VARIABLE ANO CHAR(4);
DECLARE VARIABLE CORTE CHAR(2);
DECLARE VARIABLE VENC CHAR(2);
DECLARE VARIABLE DATA CHAR(10);
DECLARE VARIABLE DTCORTE CHAR(10);
DECLARE VARIABLE FATURA INTEGER;
DECLARE VARIABLE NREGISTRO SMALLINT;
BEGIN
SELECT COUNT(*) AS REGISTROS FROM TABFATURAS FT WHERE FT.NTITULAR=NEW.NCARD
AND FT.FECHADA=0 INTO :NREGISTRO;
BEGIN
IF (NREGISTRO > 0) THEN
BEGIN
FOR SELECT FT.NFATURA FROM TABFATURAS FT WHERE FT.NTITULAR=NEW.NCARD AND FT.FECHADA=0 INTO
:FATURA DO
BEGIN
NEW.NFATURA=:FATURA;
END
IF (NEW.TIPO=´D´) THEN
BEGIN
UPDATE TABFATURAS SET DEBITO=DEBITO + NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
UPDATE TABFATURAS SET SALDOFATURA=SALDOFATURA + NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
END
ELSE IF (NEW.TIPO=´C´) THEN
BEGIN
UPDATE TABFATURAS SET CREDITO=CREDITO + NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
UPDATE TABFATURAS SET SALDOFATURA=SALDOFATURA - NEW.VALOR WHERE NTITULAR=NEW.NCARD AND FECHADA=0;
END
END
ELSE IF (NREGISTRO <= 0) THEN
BEGIN
FOR SELECT CLI.DIACORTE, CLI.DIAVENCIMENTO FROM TABCLIENTES CLI WHERE
NCARTAO=NEW.NCARD INTO :CORTE,:VENC DO
BEGIN
for select extract(month from current_date) from rdb$database into :MES do
for select extract(year from current_date) from rdb$database into :ANO do
/* BEGIN
DATA=VENC+´/´+MES+´/´+ANO;
DTCORTE=CORTE+´/´+MES+´/´+ANO;
END*/
[b:6c9a871414]INSERT INTO TABFATURAS(VENCIMENTO,SALDOANT,PGTOANT,SALDOREMAN,SALDOFATURA,
PGTOMIN,VRPAGO,DATAPROC,DEBITO,CREDITO,DATAPGTO,PAGO,FECHADA,NTITULAR)VALUES(
´01/01/2004´,0,0,0,50,0,0,´01/01/2004´,50,0,NULL,´0´,´0´,´00001´);[/b:6c9a871414]
END
END
END
END
^
quando eu tiro o insert into da trigger e executo o insert fore da trigger (sozinho) ele funciona normalmente mas dentro da trigger ele dá o seguinte erro:
[b:6c9a871414]arithmetic exception, numeric overflow, or string trunction[/b:6c9a871414].
eu já testei a trigger em before insert e after inser.
oq mtem de errado?
obrigado pessoal.
Tap_pedroso
Curtir tópico
+ 0
Responder
Posts
22/11/2004
Weber
arithmetic exception, numeric overflow, or string trunction.
Algum valor que você está passando é maior que o tamanho suportando pelo campo.
Responder
Clique aqui para fazer login e interagir na Comunidade :)