登录触发后可以发送RAISE_APPLICATION_ERROR并保持连接?

时间:2015-12-14 18:29:33

标签: database oracle

我需要使用RAISE_APPLICATION_ERROR(-20101,'某些功能数据库消息')向用户发送消息; 登录用户断开连接后使用触发器时。

create or replace TRIGGER "SYSTEM".LOGON_MENSAGEM_TRIGGER AFTER
LOGON ON DATABASE DECLARE mensagem varchar2(4000) ; 
        INSERIR VARCHAR2(4000); 
        msg_erro exception; 
        PRAGMA EXCEPTION_INIT(msg_erro, -20101);         
BEGIN 

  IF USER in ( 'LTAFARELLO', 'ALEXANDRE','AUSUARIO', 'SIG_EMPLASA\ABARBOZA') THEN   
    FOR consulta IN (select id, owner, TABLE_NAME, DESCRIPTION, CREATED from DICIONARIO_SIGEMPLASA.DICIONARIO_SIGEMPLASA where ID not in (select distinct dicionario_id from DICIONARIO_SIGEMPLASA.USER_DISPLAY where USER_NAME=user )) LOOP 
      mensagem :=mensagem || 'Feição:' || consulta.owner || '.'  || consulta.table_name || ' - Data de Criação:' ||  consulta.created || ' - Descrição: ' || consulta.DESCRIPTION || chr(10) || chr(13) ; 
      INSERT INTO DICIONARIO_SIGEMPLASA.USER_DISPLAY(USER_NAME,DICIONARIO_ID)VALUES( user,consulta.id );       
      INSERIR :=INSERIR || 'INSERT INTO DICIONARIO_SIGEMPLASA.USER_DISPLAY(USER_NAME,DICIONARIO_ID)VALUES('''|| user || ''',' ||consulta.id || ');'; 
     END LOOP; 
     commit; 
       --system.SHOW_USER_MSG(user,mensagem); 
       RAISE_APPLICATION_ERROR(-20000,mensagem); 

  END IF; 
  end;

0 个答案:

没有答案