REVELAR

Fórum Erro de sintaxe na Trigger #57258

16/11/2006

0

Pessoal

Não estou conseguindo executar uma trigger. Estou fazendo assim:

CREATE TRIGGER TRIUPDCHEQUE FOR CMCHEQUE
ACTIVE AFTER UPDATE POSITION 0
AS
begin
if (NEW.FGSITUACAO = 2) then
DELETE FROM CMMOVFIN
WHERE CDCHEQUE = NEW.CDCHEQUE;


if (NEW.FGSITUACAO = 3) THEN
BEGIN
UPDATE CMCONTAPAGAR C SET C.FGSITUACAO = 1
WHERE C.CDCONTA IN (SELECT CT.CDCONTA FROM CMCTPAGCHEQUE CT WHERE CT.CDCHEQUE = NEW.CDCHEQUE);
END


if (NEW.FGSITUACAO = 4) then
BEGIN

DELETE FROM CMMOVFIN
WHERE CDCHEQUE = NEW.CDCHEQUE;

INSERT INTO CMMOVFIN(CDMOVIMENTO,CDCHEQUE,CDCONTABANCOSAIDA,FGTIPOSAIDA,DTMOVIMENTO,MNVALOR,CDEMPRESA,FGENABLEUPD,NMCOMPLEMENTO)
SELECT(SELECT CASE WHEN(MAX(CDMOVIMENTO) + 1) IS NULL THEN 1
ELSE MAX(CDMOVIMENTO) + 1
END

FROM CMMOVFIN), NEW.CDCHEQUE, NEW.CDCONTABANCO, 6, NEW.DTEMISSAO, NEW.MNCHEQUE,NEW.CDEMPRESA,2, ´Nr. cheque: ´ || NEW.IDCHEQUE || ´ Emitido em: ´ || SUBSTRING(NEW.DTEMISSAO FROM 9 FOR 2) || ´/´ || SUBSTRING(NEW.DTEMISSAO FROM 6 FOR 2) || ´/´ || SUBSTRING(NEW.DTEMISSAO FROM 1 FOR 4)
FROM CMCHEQUE WHERE CDCHEQUE = NEW.CDCHEQUE;
END
END

Está dando erro na linha :

Ele acusa que não reconhece NEW.CDCHEQUE


Está dando erro na linha:

if (NEW.FGSITUACAO = 3) THEN
BEGIN
UPDATE CMCONTAPAGAR C SET C.FGSITUACAO = 1
WHERE C.CDCONTA IN (SELECT CT.CDCONTA FROM CMCTPAGCHEQUE CT WHERE CT.CDCHEQUE = NEW.CDCHEQUE);
END

Ele acusa que não reconhece NEW.CDCHEQUE. Estranho, esse campo existe

Alguém pode me ajudar ???

Fico no aguardo
Rogério


Rogeranalista

Rogeranalista

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar