RSS

TAREA

20 Feb

Procedimientos almacenados
Un procedimiento almacenado es un objeto perteneciente a una base de datos, contiene un conjunto de instrucciones SQL, tanto de consulta, como de manipulación de datos, como de control de la secuencia del programa, asociados a un nombre, y que son ejecutados en conjunto. Puede contener parámetros tanto de entrada como de salida (parámetros pasados por referencia), así como devolver un valor de retorno.
Ventajas: al residir en la propia base de datos son compartibles por todos los usuarios y al ser código externo a la aplicación puede ser alterado sin que exista siempre la necesidad de modificar el código de la misma.

Un procedimiento almacenado se crea con la sentencia CREATE PROCEDURE,
La sintaxis de dicha instrucción es básicamente la siguiente:
CREATE PROCEDURE Nombre_del_procedimiento [Lista_de_parámetros]
AS
(Sentencias SQL)
[RETURN [Valor]]

Donde:
Nombre_del_procedimiento: Identificador que determina el nombre asignado al procedimiento
Lista_de_parámetros: Parámetros definidos en el procedimiento con la siguiente sintaxis:@nombre_var Tipo_var [OUTPUT]
El símbolo @ es necesario no sólo en la declaración sino que forma parte del propio nombre.
La claúsula OUPUT determina que dicho parámetro será utilizado para pasar información al código llamador,
Sentencias_SQL: el cuerpo del procedimiento puede estar compuesto de cualquier tipo de instrucción SQL.
Entre las instrucciones que puede contener, está la llamada a otros procedimientos almacenados, los cuales podrán acceder a los objetos pertenecientes al llamador, exceptuando las tablas temporales creadas por el mismo.
RETURN [Valor]
Un procedimiento almacenado puede devolver un valor de retorno de tipoint eger, no nulo, que puede ser rescatado por el código llamador para tener conocimiento del resultado del proceso de dicho procedimiento. Los valores -1 al -99 están reservados por el sistema, así como el 0 que se interpreta como “finalizado con éxito”. Si no se proporciona un código definido por el usuario, se utilizan los del sistema.

Triggers

Un trigger es un tipo especial de procedimiento almacenado que se ejecuta automáticamente al intentarse efectuar una modificación de los datos, en la tabla a la que se encuentran asociados.
Las operaciones que pueden “disparar” un trigger son las correspondientes a las instrucciones:
SQL
INSERT
UPDATE
DELETE
.
Puede definirse un trigger para cada una de ellas, o bien definir un trigger asociado a una combinación de las mismas.
La mayor utilidad que se confiere a un trigger, es la de asegurar la integridad referencial o el cumplimiento de las distintas reglas definidas, mediante las instrucciones y cláusulas de especificación de las reglas de integridad, definidas durante la creación de las tablas, o añadidas posteriormente.
El hecho de tener algún trigger asociado a una tabla, incide de forma negativa en cuanto al rendimiento se refiere, si bien la mayor parte del tiempo empleado en su ejecución corresponde al acceso a las diferentes tablas implicadas en los chequeos de integridad.
En relación a la creación de los triggers, las herramientas disponibles son las mismas que en el caso de los procedimientos almacenados, si bien deberán utilizarse las opciones correspondientes.
Su sintaxis es la siguiente:
CREATE TRIGGER Nombre_del_Trigger
ON Nombre_de_la_tabla
FOR {INSERT,UPDATE,DELETE}
AS (Sentecias_SQL)

Donde:
Nombre_del_Trigger: Identificador que determina el nombre del trigger en la base de datos y que debe cumplir las reglas de construcción de identificadores en SQL Server.
Nombre_de_la_tabla: Nombre de la tabla sobre la que será ejecutado el trigger
INSERT : Instrucción de inserción de filas.
UPDATE : Instrucción de actualización de filas.
DELETE : Instrucción de eliminación de filas.
Sentencias_SQL: Cualquier tipo de sentencia SQL

En el caso en que la instrucción CREATE TRIGGER forme parte de un conjunto de instrucciones (Batch), ésta deberá ser la primera y sólo puede ser aplicada sobre una tabla.
Aunque desde el trigger pueden referenciarse objetos de otras bases de datos, éste sólo puede ser creado en la base de datos en curso.
Los triggers pueden ser anidados y permiten un nivel máximo de anidamiento de 16. En caso de que un trigger caiga en un bucle infinito, se acabará producción un error de desbordamiento del nivel de anidamiento.
Los triggers no son reentrantes lo que quiere decir que en caso de que un trigger en ejecución, realice una actualización que provoque la activación del mismo, tal activación no se producirá.
Con relación a las transacciones hay que decir que en el caso de comenzarse una transacción y activarse un trigger que contenga y ejecute el comando ROLLBACK TRANSACTION, éste deshará la transacción completa iniciada antes de su activación.

Anuncios
 
Deja un comentario

Publicado por en febrero 20, 2011 en TALLER DE BASE DE DATOS

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: