Salida por pantalla con PL/SQL

Esta es mi primera pregunta en todoexpertos, me animé a hacerla porque estoy atrancada en esto. Mi problema es que estoy trabajando con el Oracle 8i, y con el editor SQL Plus y quiero realizar un trigger que antes de insertar en la base de datos compruebe la edad de la persona que se va a insertar y si es mayor de 30 saque por pantalla una frase, por ejemplo ' La edad debe ser menor'. El código que pongo yo es CREATE TRIGGER "Eva". "trigger1" BEFORE INSERT ON "Empleados" FOR EACH ROW BEGIN SET serveroutput ON; IF (:new. Edad>30) THEN dbms_output. Put_line("la edad debe ser menor");END IF; END; y nos dice que crea el trigger pero con errores de compilación y al insertar una fila da igual que la edad sea mayor o menor que 30 nos dice que ORA-04098: trigger 'trigger1' is invalid and failed re-validated. POr favor si alguien sabe que hago mal, contestarme, he mirado por internet y no encuentro nada que me diga que es lo que está mal.

1 respuesta

Respuesta
1
Para poder hacer lo que me estas comentando, no te es necesario el paquete dbms_output. Este paquete posibilita mostrar mensajes siempre y cuando este activado el servidor.
Pero esto no significa que, según entiendo que quieres hacer, si la edad es mayor que 30 pare de ejecutarse el programa y no realice la inserción de las filas. Si lo que quieres hacer es parar el programa y no realizar la inserción de registros que no cumplan la condición, y además quieres mostrar un mensaje de adevertencia. "Error la edad supera el limite, por ejemplo., debes utilizar las excepciones.
En este caso el código sería el siguiente
IF (:new. Edad > 30) THEN
RAISE_APPLICATION_ERROR(-20000,'*** La edad debe ser menor a 30 ***');
END IF;
En cuanto a lo del error, ese error se muestra porque el trigger no está válido. Para que un Objeto de Base de datos, pueda ser utilizado debe estar validado. Para ello cuando lo complies no debe darte ningún error de compilación. Si cuando lo compilas, si te da error, debes poner SQL> Sho error. Esto te monstrará los mensajes de error que el trigger te de. Yo ahora no te puedo decir gran cosa del error que te pueda salir, lo que si te digo es que si estas utilizando "" para el nombre del trigger y la tabla, eso dará error. Si aun así tienes dudas ya me dirás.
Muchas gracias, nos ha servido para lo que queríamos, nos da también otros errores que nosotros suponemos que son consecuencia del nuestro, porque nos dice donde da el error que nosotros hemos creado y que se produce durante la ejecución del trigger. Seguiremos en contacto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas