Procedimeintos Cursores y Disparadores



Comments



Description

Procedimientos del almacenado¿Qué son?  Son un conjunto de procedimientos almacenados físicamente en una base de datos (de ahí su nombre). Estos pueden ser llamados por una aplicación externa, un trigger u otro procedimiento de almacenado. Usos  La implementación de un SP varía de un SGBD a otro. La mayoría lo soportan de alguna forma. Dependiendo del SGBD, los SP pueden ser implementados por varios lenguajes de programación, tales como SQL, Java, C y C++. Estructura en mysql  CREATE PROCEDURE nombre (parámetro)  [características] definición Ejemplos  mysql> delimiter //  mysql> CREATE PROCEDURE procedimiento (IN cod INT)  -> BEGIN  -> END  -> // 1. IF a > 10 THEN 5. 8. 9. INSERT INTO tabla VALUES (variable). -> SELECT * FROM tabla WHERE cod_t = cod. 10. ELSE 7. SET variable = ‘mayor a 10’. CREATE PROCEDURE procedimiento2 (IN a INTEGER) 2. DECLARE variable CHAR(20). 4. 6. END IF. BEGIN 3. END Ventajas  El fácil acceso y modificación de tablas utilizando menos sentencias para  poder ejecutar el mismo procedimiento Una vez creado el procedimiento se puede utilizar cuantas veces sea necesario que lo utilicemos de una manera . SET variable = ‘menor o igual a 10’. uno puede estarle pidiendo al SGBD que realice varias operaciones  lógicas. los cursores son de solo lectura y pueden recorrerse únicamente en una dirección. A pesar de estas limitantes su uso en procedimientos almacenados puede ser muy útil y para ejemplificarlo vamos a crear un procedimiento almacenado que nos devuelva una lista de correos separada por punto y coma (. nos podría servir para .Desventajas  Hacen que la base de datos sea más pesada tanto para la memoria como para el procesador.C++… Algunos SGBD modernos (notablemente Microsoft SQL Server 2000 en adelante) no ofrecen ninguna ventaja de desempeño usando SP: son compilados y almacenados en caché de la misma forma dynamic SQL. Su uso.). CURSORES ¿Qué son? En MySQL. Sólo contienen SQL declarativo. C#. claro. la cual no es su función. En vez de estar concentrado en almacenar y devolver datos. así que es muy dificultoso escribir procedimientos complejos para negocios como en otros lenguajes de  programación en la capa de aplicación tales como Java. generará un error. Ejemplos DECLARE cursor_edad CURSOR FOR SELECT EDAD FROM CLIENTE . Estructura una variable. Veamos la sintaxis: DECLARE nombre_cursor CURSOR FOR . Debemos los cursores se declararlos declaran después de nuestras variables corrientes.aquellas aplicaciones que envían correos a determinadas listas de distribución Usos Para implementar un cursor debemos tener en cuenta 4 fases de su con la funcionamiento:     Al Declaración Apertura Lectura Cierre igual que una sentencia DECLARE . de lo contrario MySQL. Como tal. cientos o incluso miles de líneas de código SQL puede escribirse como un procedimiento almacenado en el servidor mediante el nombre de dicho procedimiento. una sentencia formada por decenas. tales como la manipulación de un gran conjunto de datos para producir un resultado resumido. END. posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados resultante de de regreso al usuario.Centralización de la definición. al formar parte de la base de datos los procedimientos almacenados están en un lugar centralizado y pueden ser ejecutados por cualquier aplicación que tenga acceso a la misma.Es ejecutado directamente en el motor de bases de datos. el cual usualmente corre en un servidor separado. ya que puede ser perjudicial para el rendimiento del servidor.Encapsulamiento de un proceso complejo o que podría requerir la ejecución de varias consultas SQL. Evitando la excesiva declaración de procedimientos de ejecución en el gestor de bases de datos.WHERE NOMBRE LIKE 'a%'. y ejecutarse simplemente . Ventajas Es notorio que existen más ventajas que desventajas en el uso de procedimientos. Esto reduce la necesidad de codificar lógica innecesaria en el programa cliente y tener un mejor manejo de la capa de negocio de nuestra aplicación. CREATE PROCEDURE processorders() BEGIN DECLARE ordernumbers CURSOR FOR SELECT ordernum FROM orders. deshaciéndose de la sobrecarga comunicar grandes cantidades de datos salientes y entrantes. Reducción del tráfico de red. Algunos SGBD intentan minimizar este impacto utilizando el fetch de bloque. el recurso no será liberado hasta que la sesión SQL (conexión) sea cerrada. almacenamiento temporal. El cliente almacena el bloque de fila en un buffer local y recupera las filas desde el mismo hasta que el buffer está vacío. Un fetch de bloque implica que se envían múltiples filas o registros de forma conjunta desde el servidor al cliente.Desventajas La siguiente información puede variar dependiendo del sistemas gestores de bases de datos.Los cursores reservan recursos en el servidor. Si un cursor no se cierra de manera correcta. sino también a fallos más graves . Microsoft SQL Server implementa los cursores creando una tabla temporal y rellenándola con los datos de la consulta. etc. Repetidos network round trips pueden suponer un impacto severo en la velocidad de operación del cursor. packages. como por ejemplo locks. procesos. y que se debe al tiempo necesario para enviar la petición al SGBD y esperar los datos. Ello supone la utilización de mucho más ancho de banda de la red de lo que se necesitaría por norma general para ejecutar una sola sentencia SQL como DELETE. Por ejemplo. conocido en inglés como network round trip.Recuperar una fila del cursor puede resultar en un retraso. Este desperdicio de recursos en el servidor puede llevar no sólo a una degradación del rendimiento. Algunos usos para los disparadores es verificar valores a ser insertados o llevar a cabo cálculos sobre valores involucrados en una actualización. Esta sección trata sobre el uso de los disparadores y las limitaciones vigentes. tablas. por lo tanto hay ciertas limitaciones en lo que puede hacerse con ellos. Dependiendo de labase de datos. Por ejemplo. Un disparador se asocia con una tabla y se define para que se active al ocurrir una sentencia INSERT. borrar o editar usuarios. Puede también establecerse que se active antes o despues de la sentencia en cuestión. o después de que sea actualizado. o UPDATE sobre dicha tabla. es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Algunas bases de datos pueden ejecutar triggers al crear. Ejemplos . Actualmente. el soporte para disparadores es básico.Disparadores (triggers) Un trigger (o disparador) en una Base de datos. actualización (UPDATE) o borrado (DELETE). Un disparador es un objeto de base de datos con nombre que se asocia a una tabla. los triggers pueden ser de inserción (INSERT). se puede tener un disparador que se active antes de que un registro sea borrado. y se activa cuando ocurre un evento en particular para la tabla. Usos El soporte para disparadores se incluyó a partir de MySQL 5.0.DELETE.2. bases de datos u otros objetos. Query OK. Query OK. amount DECIMAL (10. Amount.D.06 sec) Ventajas Seguridad de los datos mejorada: •Ofrecen chequeos de seguridad basada en valores. Desventajas •Hay que definir con anticipación la tarea querealizara el trigger •Peligro de pérdida en Reorganizaciones •Hay que programarlos para cada DBMS •Un Trigger nunca se llama directamente. dinámicas de integridad de datos •Aseguran que las operaciones relacionadas se realizan implícita.03 sec) MySQL>CREATE TRIGGER INS sum BEFORE INSERT ON account ->FOR EACH ROW SET @sum = @sum + NEW.Respuesta instantánea ante un evento auditado juntas •Ofrece un mayor control sobre la B. 0 rows affected (0. 0 rows affected (0.Integridad de los datos mejorada: •Fuerzan restricciones referencial. 2)). yde integridad de forma .MySQL>CREATE TABLE account (actinium INT. •Por funcionalidad.UPDATE y DELETE.•Los triggers no se desarrollan pensando en unsolo registro. •No se pueden utilizar en tablas temporales en uno sololas funciones de . que poner •Utilizar moderadamente los triggers. no hay INSERT. los mismos deben funcionar enconjunto con los datos ya que se disparan por operación y no por registro.
Copyright © 2024 DOKUMEN.SITE Inc.