martes, 20 de noviembre de 2012

Procedimientos Almacenados y Disparadores(Trigger)

Procedimiento Almacenados


Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.


   CREATE 

   PROCEDURE <nombre_procedure> [(<param1> [IN|OUT|IN OUT]     
                                 <type>, <param2> [IN|OUT|IN OUT]      
                                 <type>, ...)] 

   BEGIN 

             -- Sentencias
   END;



La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía ( ) . Cada parámetro es un parámetro IN por defecto. Para especificar otro tipo de parámetro, use la palabra clave OUT o INOUT antes del nombre del parámetro. Especificando IN, OUT, o INOUTsólo es valido para una PROCEDURE.

Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

Disparadores (Trigger)


Un disparador (o trigger) es un tipo especial de procedimiento almacenado asociado a una tabla que se ejecuta al realizar una operación “básica” (INSERT, un DELETE o un UPDATE) sobre ésta. La operación básica que despierta al trigger es conocida como sentencia disparadora.

La ejecución del disparador puede ser antes (before) o después (after) de llevar a cabo la sentencia disparadora. Es posible especificar condiciones adicionales para la ejecución del disparador (restrictores).

Los disparadores sea activan al crearlos.

     Eliminar un disparador:      DROP TRIGGER nombre_disparador;

     Activar/ Desactivar dispadores: Existen dos opciones.

      ALTER TRIGGER nombre_disparador {DISABLE | ENABLE};

      ALTER TABLE nombre_tabla {ENABLE | DISABLE} ALL TRIGGERS;



   Temporalidad del Evento:    AFTER / BEFORE

         BEFORE: Ejecutan la acción asociada antes de que la sentencia sea ejecutada

          CREATE TRIGGER NombreTrigger
          BEFORE Insert ON NombreTabla ….

          AFTER: Ejecutan la acción asociada después de que se haya ejecutado la sentencia

          CREATE TRIGGER NombreTrigger
          AFTER Insert ON NombreTabla


La sintaxis de un disparador es

       CREATE [OR REPLACE] TRIGGER nombre
         {BEFORE | AFTER } // Temporalidad del Evento
         {INSERT | DELETE | UPDATE} ON <tabla>
         [FOR EACH ROW] //Granularidad
       BEGIN
         cuerpo del trigger
       END

Cursores

¿Cuando Debemos Usar Un Cursor?


Los cursores se utilizan para manejar las sentencias SELECT. Un cursor esta formado por un conjunto de registros devueltos por una instrucción SQL del tipo SELECT. Desde un punto de visto interno a la base de datos, los cursores son segmentos de memoria utilizados para realizar operaciones con los registros devueltos tras ejecutar una sentencia SELECT.

¿Como Crear Y Llamar Un Proceso En Mysql?


Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.


   CREATE 

   PROCEDURE <nombre_procedure> [(<param1> [IN|OUT|IN OUT]     
                                 <type>, <param2> [IN|OUT|IN OUT]      
                                 <type>, ...)] 

   BEGIN 

             -- Sentencias
   END;



La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía ( ) . Cada parámetro es un parámetro IN por defecto. Para especificar otro tipo de parámetro, use la palabra clave OUT o INOUT antes del nombre del parámetro. Especificando IN, OUT, o INOUTsólo es valido para una PROCEDURE.

Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

¿Como Crear Una Función?

Las variables en las funciones se declaran con la sentencia DECLARE, y se asignan valores con la sentencia SET. Esta variable es de ámbito local, y será destruida una vez finalice la función. Si se desea asignar un valor por defecto a la variable en el momento de declararla se puede utilizar la sentencia DEFAULT junto con la sentencia DECLARE. Aquí teneis el ejemplo:
       CREATE FUNCTION HolaMundo() RETURNS VARCHAR(30)
       BEGIN
         DECLARE salida1 VARCHAR(30) DEFAULT 'Hola';
         DECLARE salida2 VARCHAR(30);


         SET salida2 = ' mundo';
         RETURN CONCAT(salida1,salida2);
       END
;


Para crear función con parámetros:

      CREATE FUNCTION HolaMundo(entrada VARCHAR(30)) RETURNS             
      VARCHAR(30)

      BEGIN

        DECLARE salida VARCHAR(30);
        SET salida = entrada;
        RETURN salida;

     END;

Para llamar a esta función:

     SELECT HolaMundo('Hola Mundo');