possuo banco de dados firebird e possuo a seguinte rotina para fazer a verificação dos campos q foram alterados... so q nao esta funcionando... o q esta faltando alguem pode me ajudar?
create or alter procedure PAF_HASH (
PTABELA varchar(25),
PCAMPO varchar(100),
PCHPAF_ECF integer,
PID integer,
PSEQ integer,
PHASH varchar(100),
PCONSULTA char(1))
returns (
RESULT char(1))
as
declare variable VHASH varchar(100);
declare variable VMODIFIFICADO char(1);
begin
-- Procura o HASH se existir o registro
RESULT = 'S';
SELECT H.HASH, H.MODIFICADO
FROM TBL_PAF_HASH H
WHERE (H.TABELA = :PTABELA )
AND (H.CAMPO = :PCAMPO )
AND (H.CHPAF_ECF = :PCHPAF_ECF)
AND (H.ID = :PID )
AND (H.SEQ = :PSEQ )
INTO :VHASH, :VMODIFIFICADO;
IF (VHASH IS NULL) THEN VHASH = '';
IF (VHASH = '') THEN BEGIN -- caso NÃO exista o registro, cria o registro
IF (PCONSULTA = 'S') THEN BEGIN
RESULT = 'N';
END ELSE
INSERT INTO TBL_PAF_HASH
( TABELA, CAMPO, CHPAF_ECF, ID, SEQ, HASH, MODIFICADO )
VALUES (:PTABELA, :PCAMPO, :PCHPAF_ECF, :PID, :PSEQ, :PHASH, 'N');
END ELSE -- caso SIM exista o registro
IF (VMODIFIFICADO = 'S') THEN BEGIN -- ja era Modificado so retorna como 'N'
RESULT = 'N';
END ELSE IF (VHASH <> PHASH) THEN BEGIN -- HASH sejão diferente e AINDA não tenha sido modoficado
IF (PCONSULTA = 'S') THEN BEGIN
EXECUTE PROCEDURE HASH_MODIFICADO( :PTABELA, :PCAMPO, :PCHPAF_ECF, :PID, :PSEQ );
RESULT = 'N';
END ELSE BEGIN
UPDATE TBL_PAF_HASH
SET HASH = :PHASH
WHERE (TABELA = :PTABELA )
AND (CAMPO = :PCAMPO )
AND (CHPAF_ECF = :PCHPAF_ECF)
AND (ID = :PID )
AND (SEQ = :PSEQ );
END
END
SUSPEND;
end