domingo, 19 de octubre de 2014

Trigger en Oracle Forms

El código que se escribe en Oracle Forms, se hace en PL/SQL, Una forma de añadir código a un form es utilizar los triggers. Un Trigger  o Diparador es un bloque PL/SQL que se asocia a un objeto determinado y que se ejecuta como respuesta a un determinado evento.

Existen triggers para la mayoría de los eventos que se pueden producir en una aplicación. Generalmente estos tienen nombres que hacen referencia al evento que los dispara. Además el programador puede crear sus propios triggers, por ejemplo se puede crear un botón y asociarle el trigger: WHEN-BUTTON-PRESSED que ejecutara el bloque PL/SQL correspondiente cuando se haga click  sobre el botón.

El código de un trigger es un bloque anónimo de PL/SQL que tiene la siguiente estructura:


En la sección de declaraciones, se declararan todas las constantes, variables, cursores y excepciones que intervengan en el bloque, mientras que la sección de sentencias ejecutables contendrá las instrucciones que ejecutará el bloque, siendo la única obligatoria. Por último la sección de excepciones se utiliza para el manejo de errores. Si escribimos un bloque que no tenga sección de declaraciones y de excepciones, las palabras reservadas: BEGIN y END pueden omitirse.

El nombre de un trigger comienza con un prefijo, contiene al menos un guión y a continuación el evento que dispara el trigger. Los posibles prefijos son:



Cuando se define un trigger se asocia a un determinado objeto que puede ser un ítem, un bloque o un form, es decir los trigger puede declararse a nivel de ítem, bloque o form. Ello determina el alcance de dicho trigger o lo que es lo mismo, el dominio donde debe ocurrir el evento para que el trigger se dispare. No obstante algunos triggers presentan restricciones en cuanto a los niveles en los que pueden ser definidos. Por ejemplo el trigger: PRE-QUERY tendrá que declararse a nivel de bloque porque se dispara como consecuencia de la consulta que se realiza en un bloque, el trigger: WHEN-NEW-FORM-INSTANCE se declarara a nivel de form por razones obvias.


Tipos de Trigger
Podemos clasificar los triggers en los siguientes grupos:

DE BLOQUE (BLOCK PROCESSING TRIGGERS):
Se disparan cuando se actualiza un registro dentro de un bloque.




DE EVENTOS DE INTERFACE (INTERFACE EVENT TRIGGERS):
Se disparan cuando ocurre algún evento en el interface del form.




DE RELACION MAESTRO-DETALLE (MASTER-DETAIL TRIGGERS):

Los genera automáticamente Oracle cuando se crea una relación maestro-detalle entre bloques. Se utilizan para coordinar el bloque maestro con el bloque detalle.




DE CONTROL DE MENSAJES (MESSAGE-HANDLING TRIGGERS):
Oracle proporciona automáticamente mensajes de error e información en respuesta a eventos producidos en tiempo de ejecución. Existen triggers que se disparan cuando se producen estos mensajes, lo que nos permite personalizar dichos mensajes.




DE NAVEGACION (NAVIGATIONAL TRIGGERS):
Distintos niveles: form, bloque, record o item. Pueden subdividirse en dos categorías:

PRE- y POST TRIGGERS.
Se disparan cuando Oracle navega internamente a través de los diferentes niveles de la jerarquía de objetos.




WHEN-NEW-INSTACE TRIGGERS.
Se disparan al final de una secuencia de navegación que coloca el cursor en un item diferente. Especialmente estos trigger se disparan justamente después de que Oracle mueva el cursor a un item diferente, cuando el form queda en espera de una entrada del usuario, sin embargo no responden a navegaciones internas.




DE CONSULTA (QUERY-TIME TRIGGERS):
Se disparan antes o después de que se ejecute una “query” en un bloque.




TRANSACIONALES (TRANSACTIONAL TRIGGERS):
Responden a una gran variedad de eventos que se producen cuando un form interactúa con los datos fuente.



DE VALIDACION (VALIDATION TRIGGERS):
Se disparan cuando Oracle valida datos en un campo o registro.



DE TECLA (KEY TRIGGERS):
Se disparan cuando el usuario pulsa una tecla o combinación de ellas.

DE RESPUESTA A EVENTOS DEL RATON:


4 comentarios: