Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda sobre cursores y trigger

Estas en el tema de Ayuda sobre cursores y trigger en el foro de Bases de Datos General en Foros del Web. Como manejar lo cursores y trigger en oracle....otra cosa que pueden decirme de la variable "type"......
  #1 (permalink)  
Antiguo 09/12/2008, 13:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 4
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda sobre cursores y trigger

Como manejar lo cursores y trigger en oracle....otra cosa que pueden decirme de la variable "type"...
  #2 (permalink)  
Antiguo 11/12/2008, 15:53
Avatar de mesquivelh  
Fecha de Ingreso: diciembre-2008
Mensajes: 4
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda sobre cursores y trigger

CURSORES

Los cursores sirven para guardar el resultado de cualquier consulta que hagamos desde algún programa escrito en lenguaje PL/SQL. Emplearemos el siguiente formato para realizar la consulta si utilizamos cursores:
Código:
	   SELECT <columnas> INTO <variables> FROM <tablas> [ WHERE . . .
Las variables que van justo después de la cláusula INTO recibirán el valor de la consulta, por lo tanto deberán haber correspondencia de tipos entre ellas y el resultado que vayan a almacenar.

Código:
	   DECLARE 
	      v_nombre VARCHAR(10);
	      v_curso NUMBER;
	   BEGIN
	      SELECT nombre, curso INTO v_nombre, v_curso
	      FROM ALUMNOS WHERE nexp = '10003';
	      DBMS_OUTPUT.PUT_LINE(v_nombre||'->'||v_curso);
	   END;
Además, podemos declarar los cursores sin especificar un tipo concreto, sino haciendo referencia al tipo de la columna de la cual pretendemos que almacene algún valor:

Código:
	   salario   EMPLEADOS.salario%TYPE;
	   emp_reg   EMPLEADOS%ROWTYPE;
	   CURSOR emp_cur IS SELECT * FROM EMPLEADOS;
Para los tres ejemplos anteriores, hemos supuesto que existe una tabla EMPLEADOS con al menos una columna salario. En el primero, definimos como tipo de la variable salario el mismo tipo que la columna salario de la tabla EMPLEADOS. En el segundo, definimos un cursor capaz de almacenar una fila completa de la tabla EMPLEADOS. En el tercero, definimos un cursor capaz de almacenar los datos que resulten de la consulta que se le asocia en su declaración.

TRIGGERS
Un disparador define una acción que la base de datos debe llevar a cabo cuando se produce algún suceso relacionado con la misma. Los disparadores (triggers) pueden utilizarse para completar la integridad referencial, también para imponer reglas de negocio complejas o para auditar cambios en los datos. El código contenido en un disparador, denominado cuerpo del disparador, está formado por bloques PL/SQL. La ejecución de disparadores es transparente al usuario.

Para crear un disparador (trigger) en una tabla, el usuario con el que accedamos a Oracle deberá ser propietario de la misma, teniendo así el privilegio ALTER para la tabla ó ALTER ANY TABLE. Además, dicho usuario, debe disponer del privilegio CREATE TRIGGER.

Existen varios tipos de disparadores, dependiendo del tipo de transacción de disparo y el nivel en el que se ejecuta el disparador (trigger):

1.- Disparadores de nivel de fila: se ejecutan una vez para cada fila afectada por una instrucción DML. Los disparadores de nivel de fila se crean utilizando la cláusula for each row en el comando create trigger.

2.- Disparadores de nivel de instrucción: se ejecutan una vez para cada intrucción DML. Por ejemplo, si una única intrucción INSERT inserta 500 filas en una tabla un disparador de nivel de instrucción para dicha tabla sólo se ejecutará una vez. Los disparadores de nivel de instrucción son el tipo predeterminado que se crea con el comando create trigger.

3.- Disparadores Before y After: puesto que los disparadores son ejecutados por sucesos, puede establecerse que se produzcan inmediatamente antes (before) o después (after) de dichos sucesos.

4.- Disparadores Instead Of: puede utilizar INSTEAD OF para indicar a Oracle lo que tiene que hacer en lugar de realizar las acciones que invoca el disparador. Por ejemplo, podría usar un disparador INSTEAD OF en una vista para gestionar las inserciones en una tabla o para actualizar múltiples tablas que son parte de una vista.

5.- Disparadores de esquema: puede crear disparadores sobre operaciones en el nivel de esquema tales como create table, alter table, drop table, audit, rename, truncate y revoke. Puede incluso crear disparadores para impedir que los usuarios eliminen sus propias tablas. En su mayor parte, los disparadores de nivel de esquema proporcionan dos capacidades: impedir operaciones DDL y proporcionar una seguridad adicional que controle las operaciones DDL cuando éstar se producen.

6.- Disparadores en nivel de base de datos: puede crear disparadores que se activen al producirse sucesos de la base de datos, incluyendo errores, inicios de sesión, conexiones y desconexiones. Puede utilizar este tipo de disparador para automatizar el mantenimiento de la base de datos o las acciones de auditoría.

Martín Esquivel H.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:17.