Cursores y disparadores

1. Definir el cursor

En la realización de SELECT, INSERT, DELETE y UPDATE PL / SQL bloque, contexto ORACLE se le asigna un área (área de contexto) en la memoria, es decir, la memoria intermedia. El cursor es un puntero a la zona, o un área designada de trabajo (área de trabajo), o un tipo de datos estructurado. Se proporciona un método para cada fila de datos tiene varias filas de datos del conjunto de resultados de consulta se realizan por separado, es una aplicación programática común diseñada para aplicaciones embebidas sentencias SQL par.

Categoría cursor

1. explícita  del cursor para procesar SELECT varias filas de datos devueltos por la instrucción; crear la intervención humana

2. implícita  del cursor para procesar SELECT INTO no consulta y DML declaraciones; crear automáticamente, gestionar,

 

2. Los  ejercicios de muestra cursor explícitos

 

- Cursor de paso de parámetros, cursor de visualización

 

DECLARAR

 

  - la definición de un cursor, la lista de ciclo designado

 

  c_cur cursor seleccionar * de ruanjian182;

 

  - Definir colección de referencia

 

  v_info ruanjian182% ROWTYPE;

 

EMPEZAR

 

  - Abrir el cursor

 

  c_cur abierta;

 

  - adquisición ciclo de bucle.

 

  lazo

 

    se ha podido recuperar c_cur en v_info;

 

    - Salir condicional

 

    salir cuando c_cur% notfound;

 

    dbms_output.put_line (v_info.id || ' '|| v_info.name);

 

  final del bucle;

 

  - Cerrar el cursor

 

  cerca c_cur;

 

FINAL;

3. Los ejercicios de muestra cursor implícitas

- cursor implícito para bucle:

DECLARAR

  - la definición de un cursor, la lista de ciclo designado

  c_cur cursor seleccionar * de ruanjian182;

EMPEZAR

  para v_info en bucle c_cur

    dbms_output.put_line (v_info.id || ' '|| v_info.name);

  final del bucle;

FINAL;


 

1. Definición del gatillo

Un disparador es un procedimiento almacenado se ejecuta de manera implícita, se puede utilizar PL / SQL de desarrollo

Cuando se produce un evento específico (como el cambio de tablas, la creación de objetos, iniciar la sesión en la base de datos), el Oracle se disparará automáticamente la ejecución de código correspondiente

 

Tipo flip-flop

 

1, disparadores DML

 

Tabla en la base cuando la LMD (insertar, actualizar, eliminar) se activa la operación, y puede desencadenar el funcionamiento de cada línea o declaración.

 

2, en lugar de flip-flops

 

Es oracle8 ser diseñado para un tipo de vista de una operación de disparo

 

3, los factores desencadenantes del sistema

 

evento de disparo del sistema de base de datos, tales como arranque, parada, etc.

 

precauciones:

 

1. Los desencadenantes no aceptan parámetros.

 

No puede haber un máximo de 12 disparadores 2. una mesa, pero al mismo tiempo, el mismo evento, el mismo tipo de disparo puede ser de una sola. No es una contradicción entre el gatillo.

 

3. Los factores desencadenantes más sobre una mesa, el impacto de la operación DML en la tabla de rendimiento mayor.

 

4. gatillo un máximo de 32 KB. De hecho, si es necesario, para establecer el proceso, entonces la instrucción CALL en una llamada de gatillo con.

 

El disparador no puede contener declaraciones de control de transacciones (COMMIT, ROLLBACK, SAVEPOINT). Debido a que el trigger se disparó parte de una declaración, la declaración de activación se presenta, una reversión, el gatillo se ha comprometido también, deshace. Cualquier procedimiento, llamada a la función en el cuerpo de disparo, no puede utilizar las instrucciones de control de transacciones.

 

-表头复制
CREATE TABLE rj182_log AS SELECT * FROM ruanjian182 donde 1 = 2;
seleccionar * de ruanjian182;
seleccionar * de rj182_log;

2. Los factores desencadenantes DML 
- retirar la muestra:
la Creación o el reemplazar el gatillo tr_del_rj182
- especificada gatillo por primera vez a los desencadenantes operación de eliminación
de los antes de la Borrar
ruanjian182 EN
- instrucciones para crear un disparador a nivel de fila
para la que cada fila
del comienzan
- serán modificados antes de que se han insertado los datos la mesa de registro, asegúrese de que SQL puede trabajar
valores insertar en rj182_log (old.id: ,: old.name ,: old.age,
: old.price ,: old.createdate ,: old.sex, 'la Borrar') ;
Fin;

- Modificación Ejemplo:
crear o sustituir gatillo tr_update_rj182
- tiempo especificado después de que el gatillo se dispara operación de modificación
después de la actualización
EN ruanjian182
para cada fila
el inicio
- registrar los valores modificados
de inserción en valores rj182_log (new.id:, : new.name, : new.age,
: new.price ,: new.createdate ,: new.sex, la 'actualización');
Fin;

- Eliminar gatillo
gota gatillo rj182_log;

3. inicio de sesión, cierre de sesión de ejercicios de disparo

- crear una tabla de registro de registro
Crear Tabla log_event (
el log_type VARCHAR2 (20 es),
nombre de usuario VARCHAR2 (20 es),
logonTime FECHA,
logoffTime FECHA
);
SELECT * desde log_event;

- administrador de la cuenta de inicio de sesión de disparo requiere
la página Crear o el reemplazar el gatillo logon_trigger
la base de datos Después de inicio de sesión en
el inicio
INSERT INTO log_event (nombre de usuario, log_type, logonTime)
valores ( 'Inicio de sesión', ora_login_user, SysDate);
Fin;

- Necesidad de utilizar el administrador de disparo cuenta Desconexión
del Cree o la sustitución del gatillo logoff_trigger
la base de datos antes de cierre de sesión EN
el inicio
INSERT INTO log_event (nombre de usuario, log_type, logoffTime)
valores ( 'Cerrar sesión', ora_login_user, sysdate);
Fin;

 

Supongo que te gusta

Origin www.cnblogs.com/ZXDZXD/p/12468114.html
Recomendado
Clasificación