Autor Tema: ORACLE: raise_application_error en TRIGGER usin AFTER LOGON ON DATABASE  (Leído 8391 veces)

0 Usuarios y 1 Visitante están viendo este tema.

sicario

  • Visitante
Bueno señores... vengo aqui solicitando ayuda con este mi trigger chuquino:

la cosa es que estoy creando un trigger que se ejecutara en mi base de datos cada vez que cualqueir usuario haga LOGON independientemente de la aplicacion conque lo haga... el caso es que cuando eso suceda necesito enviar un mensaje.. de esos asi tipo "HOLA MUNDO".. y luego que deje conectarse a la DB.  Mi problema en concreto es que utilizo en PL el maldito
raise_application_error para tales fines.. pero el p3nd3j0.. me aborta la conexion y con ello nadie puede entrar a la DB...

Pregunta:  Alguien sabe como mandar mensajes desde un TRIGGERS.. sin que aborte el proceso?


este es mi codigo:
Código: [Seleccionar]
CREATE OR REPLACE TRIGGER DBA_Alert
  AFTER LOGON ON DATABASE
DECLARE
  v_dias  integer;
  v_prog varchar2(100);
  v_session integer;
BEGIN
 SELECT sys_context('USERENV','SESSIONID')
        INTO v_session
        FROM dual;
 SELECT module
        INTO v_prog
        FROM v$session
        WHERE audsid = v_session;
 -- codigo borrado
  IF UPPER(v_prog) LIKE '%TOAD%' and v_dias>20 THEN
     RAISE_APPLICATION_ERROR(-20000, 'Han pasado '|| to_char(v_dias) || ' mensaje privado'  );
  END IF;
 END;

ojala exista algun valiente...  :thumbsup:

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ORACLE: raise_application_error en TRIGGER usin AFTER LOGON ON DATABASE
« Respuesta #1 : enero 07, 2009, 06:59:47 pm »
y te presenta el mensaje?¿


.... y si declaras el exception ?¿
algo así:
Código: [Seleccionar]
CREATE OR REPLACE TRIGGER DBA_Alert
................
  IF UPPER(v_prog) LIKE '%TOAD%' and v_dias>20 THEN
     EXCEPTION
     RAISE_APPLICATION_ERROR(-20000, 'Han pasado '|| to_char(v_dias) || ' mensaje privado'  );
  END IF;
 END;
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

sicario

  • Visitante
Re: ORACLE: raise_application_error en TRIGGER usin AFTER LOGON ON DATABASE
« Respuesta #2 : enero 08, 2009, 08:58:18 am »
y te presenta el mensaje?¿

Si amiguito.. me lo presenta... mi clavo es que en oracle... el manejo de RAISE_APPLICATION_ERROR  invalida el proceso de ejecucion... en mi caso el LOGON A LA DB.  :-/

Insito en que lo que quiero lograr es un MESSAGE despues del LOGON y luego... como "dorival" que la vida siga igual.... pero quiza.. le estoy pidiendo demasiado a este ORACLE de mier!