Pular para o conteúdo

Fóruns SQL e PL/SQL Dúvida Expressões Regulares – Replace (REGEXP_REPLACE) Dúvida Expressões Regulares – Replace (REGEXP_REPLACE)

#97551
gsmdf
Participante

    [quote=”burga”:h031jypv]Dá pra fazer assim:

    with t as (select
    'DROP TRIGGER TCU.TR_ACAO;

    CREATE OR REPLACE TRIGGER TCU.TR_ACAO AFTER INSERT OR UPDATE OR DELETE

    ON TCU.ACAO
    FOR EACH ROW

    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
    

    )' texto from dual)
    select
    regexp_replace(texto,'DROP([[:print:]|[:cntrl:]])INSERT INTO AUDIT_TCU.ACAO([[:print:]|[:cntrl:]])(')
    from t;

    Abraços,[/quote]


    regexp_replace(texto,'DROP([[:print:]|[:cntrl:]])INSERT INTO AUDIT_TCU.ACAO([[:print:]|[:cntrl:]])(')

    Burga,

    Gostaria que explicasse o que significa o ([[:print:]|[:cntrl:]]) entre DROP e *.
    E que depois você usou de novo.
    Quando é replace por BLANK não é necessário então o terceiro parametro da função ? O default é ” ? Pois você usou apenas dois parametros, o texto e a expressão regular a ser substituida.

    Valeu!