› Fóruns › SQL e PL/SQL › Dúvida Expressões Regulares – Replace (REGEXP_REPLACE) › Dúvida Expressões Regulares – Replace (REGEXP_REPLACE)
Pessoal,
Adcionei a ultima parte da trigger, com VALUES ( …. ao texto.
Ficou assim :
DROP TRIGGER TCU.TR_ACAO;
CREATE OR REPLACE TRIGGER TCU.TR_ACAO AFTER INSERT OR UPDATE OR DELETE
ON TCU.ACAO
FOR EACH ROW
/*
Cria trigger para tabela TCU.ACAO
Data - 22/7/2010 - 14:00:16
*/
--
-- 01/10/2003 - Autor: Paulo César
-- Alterações:
-- Inclusão da variável V_UsuarioAtualizacao assumindo USER do Oracle
-- Inclusão de nova coluna USUARIO_ORACLE no Audit
-- Decisão da Mônica, Fábio, Mauricio R. e PC
--
DECLARE
V_ChangeType CHAR(1);
V_UsuarioAtualizacao CHAR(20);
V_OSUSER VARCHAR2(20);
V_MAQUINA VARCHAR2(65);
BEGIN
SELECT DISTINCT OSUSER, MACHINE INTO V_OSUSER, V_MAQUINA
FROM V$SESSION
WHERE AUDSID = USERENV(''SESSIONID'')
AND STATUS IN (''ACTIVE'',''INACTIVE'')
;
V_UsuarioAtualizacao:= USER;
IF PKG_AUDIT.COD_USUARIO IS NOT NULL THEN
V_UsuarioAtualizacao := PKG_AUDIT.COD_USUARIO;
END IF;
/* I=Insert, D=Delete, U=Update */
IF INSERTING THEN
V_ChangeType := ''I'';
ELSE
IF UPDATING THEN
V_ChangeType := ''U'';
ELSE
V_ChangeType := ''D'';
END IF;
END IF;
INSERT INTO AUDIT_TCU.ACAO
(
V_NUM_DIAS_PREVISTO
, V_DTHORA_INICIO
, V_DTHORA_TERMINO
, V_TIPO
, V_SE_DATA_ESTIMADA
, V_SE_HORA_ESTIMADA
, V_COD
, N_COD
, OPERACAO_EFETUADA
, DTHORA_ATUALIZACAO
, USUARIO_ATUALIZACAO
, OSUSER
, MAQUINA
, USUARIO_ORACLE
) VALUES (
:OLD.NUM_DIAS_PREVISTO
, :OLD.DTHORA_INICIO
, :OLD.DTHORA_TERMINO
, :OLD.TIPO
, :OLD.SE_DATA_ESTIMADA
, :OLD.SE_HORA_ESTIMADA
, :OLD.COD
, :NEW.COD
, V_ChangeType
, SYSDATE
, V_UsuarioAtualizacao
, V_OSUSER
, V_MAQUINA
, USER
);
END;
/
Ai quando usei a exp reg regexp_replace(texto,’DROP([[:print:]|[:cntrl:]])INSERT INTO AUDIT_TCU.ACAO([[:print:]|[:cntrl:]])(‘)
ele retorna há partir de :OLD.NUM_DIAS_PREVISTOS pra baixo…ele só ta parando no segundo ( após insert into.
Como arrumo essa exp reg para funcionar para qualquer outro nome de tabela que não seja ACAO (AUDIT_TCU.ACAO) pois poderia ser (AUDIT_TCU.NOME_OUTRA_TABELA) e ao mesmo tempo retornar esta parte do texto:
V_NUM_DIAS_PREVISTO
, V_DTHORA_INICIO
, V_DTHORA_TERMINO
, V_TIPO
, V_SE_DATA_ESTIMADA
, V_SE_HORA_ESTIMADA
, V_COD
, N_COD
, OPERACAO_EFETUADA
, DTHORA_ATUALIZACAO
, USUARIO_ATUALIZACAO
, OSUSER
, MAQUINA
, USUARIO_ORACLE
) VALUES (
:OLD.NUM_DIAS_PREVISTO
, :OLD.DTHORA_INICIO
, :OLD.DTHORA_TERMINO
, :OLD.TIPO
, :OLD.SE_DATA_ESTIMADA
, :OLD.SE_HORA_ESTIMADA
, :OLD.COD
, :NEW.COD
, V_ChangeType
, SYSDATE
, V_UsuarioAtualizacao
, V_OSUSER
, V_MAQUINA
, USER
);
END;
/
? Grato!