Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Implementación
Base de Datos con
Microsoft SQL Server 2000
Parte IV
2
Introducción a procedimientos almacenados
Ejecución
(primera vez
o
recompilado)
Optimización
4
Ventajas de los procedimientos almacenados
6
Creación de procedimientos almacenados
7
Normas para la creación de procedimientos
almacenados
EXEC ListaEmpleados
9
Modificando y eliminando procedimientos
almacenados
11
Usando parámetros de entrada
13
Retornando valores con parámetros de salida
• Creando el procedimientos almacenado
CREATE PROCEDURE Depto
@NombreDep char(15),
@NumEmp tinyint OUTPUT
AS
SELECT @NumEmp = COUNT(*)
FROM Empleado As E JOIN Departamento As D
ON E.numero_Dep = D.numero_Dep
WHERE NombreD = @NombreDep
• Ejecutando
DECLARE @rpta tinyint
EXEC Depto ‘Administración’, @rpta OUTPUT
SELECT ‘El resultado es:’, @rpta 14
Manejando mensajes de error
18
Tipos de funciones definida por el usuario
• Funciones de valores escalares
– Si la cláusula RETURNS especificó uno de los tipos
de datos escalares
– Se pueden definir utilizando varias instrucciones T-
SQL
• Funciones de valores de tabla
– Si la cláusula RETURNS especifica TABLE
– Se pueden clasificar como en funciones en línea o de
múltiples instrucciones
– Si RETURNS especifica TABLE sin una lista de
columnas, la función es en línea
– Si RETURNS especifica un tipo TABLE con columnas
y sus tipos de datos, se trata de una función de
valores de tabla de múltiples instrucciones
19
Creando e invocando funciones escalares
• Usar CREATE FUNCTION
CREATE FUNCTION NumEmp1 ( @depa char(15) )
RETURNS int
BEGIN
DECLARE @num int
SELECT @num = COUNT(*)
FROM Empleado As E JOIN Departamento As D
ON E.numero_Dep = D.numero_Dep
WHERE NombreD = @depa
RETURN @num
END
• Invovando funciones:
– Se pueden llamar en aquellos lugares donde se utilizan
expresiones escalares
– Utilice como mínimo el nombre de dos partes de la función 20
Creando e invocando funciones de
valores de tabla en línea
• Crean funciones:
CREATE FUNCTION NumEmp2 (@depa char(15))
RETURNS table
RETURN (SELECT COUNT(*) as CUENTA
FROM Empleado As E JOIN Departamento As D
ON E.numero_Dep = D.numero_Dep
WHERE NombreD = @depa)
• Invocando funciones
– Se puede utilizar donde están permitidas expresiones de tabla
o vista en consultas T-SQL
– Pueden llamarse utilizando un nombre de una sola parte
21
Creando funciones de valores de tabla de
múltiples instrucciones
22
Invocando funciones
• Modificando funciones
ALTER FUNCTION NumEmp2 (@depa char(15))
RETURNS table
RETURN (SELECT COUNT(*) As CUENTA
FROM Empleado As E JOIN Departamento As D
ON E.numero_Dep = D.numero_Dep
WHERE sexo = 1 AND NombreD = @depa)
• Eliminando funciones
1. Introducción a desencadenadores
2. Tipos de desencadenadores
3. Uso de desencadenadores
4. Creando desencadenadores
5. Modificando y eliminando
desencadenadores
6. Ejemplos de desencadenadores
26
¿Qué es un desencadenador?
27
Usos de los desencadenadores
28
Tablas inserted y deleted
29
Tipos de desencadenadores
• Desencadenador AFTER
– Se activa después de la acción desencadenadora y tras
haber procesado cualquier restricción
– Aplicada sólo a tablas
– Varios por cada acción de desencadenamiento
– Produce el mismo efecto que especificar FOR
• Desencadenador INSTEAD OF
– Se activa en lugar de la acción desencadenadora y
antes del procesamiento de restricciones
– Aplicada a tablas y vistas
– Uno por cada acción de desencadenamiento
30
Creando desencadenadores
31
Modificando y eliminando un desencadenador
• Modificando un desencadenador
ALTER TRIGGER elimina_empleado
ON empleado FOR DELETE
AS
UPDATE departamento SET numeroEmp_Dep = numeroEmp_Dep - 1
FROM Departamento As D JOIN deleted As Dlt
ON D.numero_Dep = Dlt.numero_Dep
UPDATE Empleado SET salario_Emp = 0.90 * E.salario_Emp
FROM Empleado As E JOIN deleted As Dlt
ON E.nss_Emp = Dlt.nss_EmpS
• Deshabilitar un desencadenador
• Habilitar un desencadenador
Prestamo Reservacion
4 2 4 2 1
Filas eliminadas
4 7
3 1 1
34
Forzando las reglas de negocio
Transacción
La sentencia DELETE se Desencadenador valida la
abortada
ejecuta en la tabla Usuario tabla prestamo
Usuario Prestamo
codigo nombre isbn copia codigo
1 Marco Perez 1 1 1
2 Jose Lopez 4 1 1
4 2 2
3 Luis Torres
3 1 3
4 Carla Diaz
37