CREATE OR ALTER PROCEDURE SP_TESTE_EXEC_BANCO_LOG (
inSQL VARCHAR(30000) NOT NULL
) AS BEGIN
-- Bloco de execucao
BEGIN
EXECUTE statement :inSQL
WITH COMMON TRANSACTION
WITH CALLER PRIVILEGES
AS USER 'sysdba'
PASSWORD 'masterkey'
ON EXTERNAL DATA SOURCE 'localhost:C:\BANCOS\BASE_LOGS.FDB';
-- Tratamento de excessao
WHEN any do
BEGIN
-- Nao precisa fazer nada, apenas para nao gerar mensagem de esceessao
END
END
-- Final do bloco
END;
-- Utilizacao
CREATE OR ALTER TRIGGER TRG_PRODUTO_TESTE FOR PRODUTO
active BEFORE UPDATE POSITION 0
AS
DECLARE variable vs_Comando VARCHAR(2500);
BEGIN
/* Trigger text */
IF (NEW.DESCPRODUTO IS DISTINCT FROM OLD.DESCPRODUTO) THEN
BEGIN
vs_Comando = 'insert into LOGS_PRODUTO (CODPRODUTO,VALOR_INICIAL,VALOR_FINAL)
values ('|| NEW.CODPRODUTO ||','''|| OLD.DESCPRODUTO ||''','''|| NEW.DESCPRODUTO ||''')';
EXECUTE PROCEDURE SP_TESTE_EXEC_BANCO_LOG(:vs_Comando);
END
END;
Comments