Desarrollo Aplicaciones con SQL Server 2005
Introducción a:  Email: bernardo.robelo@gmail.com Ing. Bernardo Robelo
Ing. BARJ - 2008 PROCEDIMIENTOS FUNCIONES DE USUARIO VISTAS INTEGRIDAD DE DATOS TRIGGERS CURSORES AGENDA TRANSACT - SQL INDICES
Ing. BARJ – 2008 Transact-SQL ¿Que es?
Transact-SQL Ing. BARJ – 2008 Lenguaje de Definición De Datos
Tipos de datos del sistema Numérico Entero Numérico exacto Numérico aproximado Moneda Fecha y hora Carácter y caracteres Unicode Binario Otros Ing. BARJ – IST – UPOLI - 2008
¿Qué son ? ¿Pará que se utilizan? Tipos de datos definidos por el usuario Ing. BARJ – IST – UPOLI - 2008
Tipos de datos definidos por el usuario Los tipos de datos definidos por el usuario están basados en los tipos de datos disponibles a través de SQL Server 2005.  Los tipos de datos definidos por el usuario se pueden emplear para asegurar que un dato tenga las mismas características sobre múltiples tablas. Ing. BARJ – IST – UPOLI - 2008
Implementación de la integridad de datos Ing. BARJ – IST – UPOLI - 2008
¿Que es la integridad de datos? Ing. BARJ – IST – UPOLI - 2008
Tipos de integridad de datos Ing. BARJ – IST – UPOLI - 2008 Integridad de dominio  ( columnas ) Integridad de entidad   (filas) Integridad referencial ( entre tablas )
Exigir integridad de los datos Integridad de datos declarativa Los criterios se definen en la definición del objeto Asegurada automáticamente por SQL Server Implementada mediante restricciones, valores predeterminados y reglas Integridad de datos procedimental Los criterios se definen en una secuencia de comandos Asegurada mediante secuencia de comandos Implementada mediante desencadenadores y procedimientos almacenados Ing. BARJ – IST – UPOLI - 2008
Integridad de datos Ing. BARJ – IST – UPOLI - 2008
Determinación del tipo de restricción que se va a utilizar Ing. BARJ – IST – UPOLI - 2008 Tipo de integridad Tipo de restricción Dominio DEFAULT CHECK REFERENTIAL Entidad PRIMARY KEY UNIQUE Referencial FOREIGN KEY CHECK
Tipos de restricciones Restricciones DEFAULT Restricciones CHECK Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Integridad referencial en cascada
¿Qué es un Indice Ing. BARJ – IST – UPOLI - 2008
Tipos de Indice CLUSTERED INDEX Por Defecto se crean indices con las Llaves Primarias Son como capitulos en el Libro Indice como la guia telefonica Mantiene juntas los numeros de Lineas NON-CLUSTERED INDEX Son como guiones para acceder a los datos Utilizado en llaves de varios campos Es el Indice o Glosario Son Atajos para acceder a los Datos Ing. BARJ – IST – UPOLI - 2008
¿Qué es una Vista? Ing. BARJ – IST – UPOLI - 2008
Introducción a las vistas Ing. BARJ – IST – UPOLI - 2008 EmployeeView Lastname  Firstname Davolio  Fuller  Leverling Nancy  Andrew  Janet Employees EmployeeID LastName  Firstname Title 1 2 3 Davolio Fuller Leverling Nancy Andrew Janet ~~~ ~~~ ~~~ Vista del usuario USE  Northwind GO CREATE VIEW dbo. Employee View AS  SELECT  LastName ,  Firstname FROM  Employees
Ventajas de las vistas Centrar el interés en los datos de los usuarios Centrarse sólo en los datos importantes o adecuados Limitar el acceso a los datos confidenciales Enmascarar la complejidad de la base de datos Ocultar el diseño de la base de datos compleja Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos heterogéneos Simplificar la administración de los permisos de usuario Mejorar el rendimiento Organizar los datos para exportarse a otras aplicaciones Ing. BARJ – IST – UPOLI - 2008
Ejemplo:   Vista de tablas combinadas Ing. BARJ – IST – UPOLI - 2008 OrderID 10663 10827 10427 10451 10515 CustomerID BONAP  BONAP  PICCO  QUICK QUICK ~~~  ~~~  ~~~  ~~~  ~~~ RequiredDate 1997-09-24 1998-01-26 1997-02-24 1997-03-05 1997-05-07 ShippedDate 1997-10-03 1998-02-06 1997-03-03 1997-03-12 1997-05-23 Orders Customers ShipStatusView USE Northwind GO CREATE VIEW dbo.ShipStatusView AS SELECT OrderID, ShippedDate, ContactName FROM Customers c INNER JOIN Orders o   ON c.CustomerID = O.CustomerID WHERE RequiredDate < ShippedDate CustomerID BONAP PICCO QUICK CompanyName Bon app' Piccolo und mehr QUICK-Stop ContactName Laurence Lebihan Georg Pipps Horst Kloss OrderID 10264 10271 10280 1996-08-21 1996-08-29 1996-09-11 ShippedDate 1996-08-23 1996-08-30 1996-09-12 ContactName Laurence Lebihan Georg Pipps Horst Kloss
Uso de vistas para dividir datos Puede utilizar las vistas para dividir los datos en varios servidores o instancias de SQL Server Cómo utiliza SQL Server las vistas para dividir datos Cómo las vistas divididas mejoran el rendimiento NO SE PUEDE No se puede incluir la cláusula ORDER BY No se puede incluir la palabra clave INTO Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 Práctica:   Implementación de vistas
Práctica: Implementación de vistas Ing. BARJ – IST – UPOLI - 2008
¿Qué es un  procedimiento almacenado? Ing. BARJ – IST – UPOLI - 2008
Definición de procedimientos almacenados Colecciones con nombre de instrucciones Transact-SQL Encapsulado de tareas repetitivas Aceptar parámetros de entrada y devolver valores Ing. BARJ – IST – UPOLI - 2008
Ventajas de los procedimientos almacenados  Compartir la lógica de la aplicación Exposición de los detalles de las tablas de la  base de datos Proporcionar mecanismos de seguridad Mejorar el rendimiento Reducir el tráfico de red Ing. BARJ – IST – UPOLI - 2008
Creación de procedimientos almacenados Utilice la instrucción CREATE PROCEDURE para crearlos en la base de datos activa Puede anidar hasta 32 niveles Use sp_help para mostrar información Ing. BARJ – IST – UPOLI - 2008 USE Northwind GO CREATE PROC dbo.OverdueOrders AS SELECT *  FROM dbo.Orders WHERE RequiredDate < GETDATE() AND ShippedDate IS Null GO
Ejecución de procedimientos almacenados Ejecución de un procedimiento almacenado por separado Ejecución de un procedimiento almacenado en una instrucción INSERT Ing. BARJ – IST – UPOLI - 2008 EXEC OverdueOrders   INSERT INTO Customers EXEC EmployeeCustomer
Ejecución de procedimientos Paso de valores por el nombre del parámetro Paso de valores por posición Ing. BARJ – IST – UPOLI - 2008 EXEC AddCustomer 'ALFKI2', 'Alfreds Futterkiste', 'Maria Anders', 'Sales Representative', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany', '030-0074321'   EXEC AddCustomer  @CustomerID = 'ALFKI', @ContactName = 'Maria Anders', @CompanyName = 'Alfreds Futterkiste', @ContactTitle = 'Sales Representative', @Address = 'Obere Str. 57', @City = 'Berlin', @PostalCode = '12209', @Country = 'Germany', @Phone = '030-0074321'
Devolución de valores mediante parámetros de salida Ing. BARJ – IST – UPOLI - 2008 CREATE PROCEDURE dbo.mathtutor @m1 smallint, @m2 smallint, @result smallint OUTPUT AS SET @result = @m1* @m2 GO DECLARE @answer smallint EXECUTE mathtutor 5, 6, @answer OUTPUT SELECT 'The result is: ' , @answer The result is:  30 Resultados del  procedimiento almacenado Ejecución del  procedimiento  almacenado Creación del  procedimiento  almacenado
Control de mensajes de error La instrucción RETURN sale incondicionalmente de una consulta o procedimiento  Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 Práctica Procedimientos Almacenados
PROCEDIMIENTOS CON PARÁMETROS Ing. BARJ – IST – UPOLI - 2008
PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS  CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS  CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS  CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
VARIABLES DE SALIDA  EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
VARIABLES DE SALIDA  EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
Ejemplos Ing. BARJ – IST – UPOLI - 2008
Ejemplos Ing. BARJ – IST – UPOLI - 2008
¿Qué es una función definida por el usuario? Ing. BARJ – IST – UPOLI - 2008
¿Qué es una función definida por el usuario? Una función de usuario, se crea con el fin de automatizar una consulta que se realiza a menudo. Funciones escalares Similar a una función integrada Funciones con valores de tabla de varias instrucciones Contenido como un procedimiento almacenado Se hace referencia como una vista Funciones con valores de tabla en línea Similar a una vista con parámetros Devuelve una tabla como el resultado de una instrucción SELECT única Ing. BARJ – IST – UPOLI - 2008
Uso de una función escalar definida por el usuario La cláusula RETURNS especifica el tipo de datos La función se define en un bloque BEGIN y END El tipo de devolución puede ser cualquier tipo de datos, excepto text, ntext, image, cursor o timestamp Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 Demostracion:   Creación de funciones definidas por el usuario
FUNCIONES DEFINIDAS POR EL USUARIO Ing. BARJ – IST – UPOLI - 2008 Declare Table
Funciones Escalares Veamos en el Enteprise Manager, la funcion creada, consultamos el apartado “Funciones definidas por el usuario” Ing. BARJ – IST – UPOLI - 2008
Funciones de Tablas en Linea Ing. BARJ – IST – UPOLI - 2008
Funciones de Tablas Con Instrucciones Ing. BARJ – IST – UPOLI - 2008
Funciones con Definicion de Esquema Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 Práctica:   Creación de funciones definidas por el usuario
Ejercicios Ing. BARJ – IST – UPOLI - 2008 Ver Solución
Ejercicios Ing. BARJ – IST – UPOLI - 2008 Solución
Ejercicios Ing. BARJ – IST – UPOLI - 2008
Ejercicios Ing. BARJ – IST – UPOLI - 2008
¿Que es un TRIGGER?   (DESENCADENADORES, DISPARADORES) Ing. BARJ – IST – UPOLI - 2008
¿Qué es un desencadenador? Un desencadenador es una clase especial de procedimiento almacenado que se ejecuta siempre que se intenta modificar los datos de una tabla que el desencadenador protege.  Asociación a una tabla Invocación automática Imposibilidad de llamada directa Identificación con una transacción Ing. BARJ – IST – UPOLI - 2008
Consideraciones acerca del uso de desencadenadores Los desencadenadores son reactivos, mientras  que las restricciones son proactivas Las restricciones se comprueban antes Las tablas pueden tener varios desencadenadores  para cualquier acción Comparación del estado de los datos antes y después de su modificación Ing. BARJ – IST – UPOLI - 2008
Funcionamiento de los desencadenadores anidados Ing. BARJ – IST – UPOLI - 2008 2 15  UnitsInStock + UnitsOnOrder  es < ReorderLevel para ProductID 2 OrDe_Update La realización de un pedido provoca la ejecución del desencadenador OrDe_Update Se ejecuta la instrucción UPDATE en la tabla  Products InStock_Update Products ProductID UnitsInStock … … 1 3 4 15 15 65 20 Se ejecuta el desencadenador   InStock_Update Envía un mensaje Order_Details OrderID 10522 10523 10524 ProductID 10 41 7 UnitPrice 31.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 10525 19.00 2 0.2 5 2 15
Desencadenadores recursivos Activación recursiva de un desencadenador Tipos de desencadenadores recursivos Recursividad directa , que se da cuando un desencadenador se ejecuta y realiza una acción  que lo activa de nuevo Recursividad indirecta , que se da cuando un desencadenador se activa y realiza una acción  que activa un desencadenador de otra tabla Conveniencia del uso de los desencadenadores recursivos Ing. BARJ – IST – UPOLI - 2008
Exigir reglas de empresa Ing. BARJ – IST – UPOLI - 2008 L os productos con pedidos pendientes no se pueden elimina r IF (Select Count (*)    FROM [Order Details] INNER JOIN deleted    ON [Order Details].ProductID = deleted.ProductID   ) > 0 ROLLBACK TRANSACTION La instrucción   DELETE se   ejecuta   en la tabla Product El código del   desencadenador comprueba la tabla Order Details ' No puede procesarse la transacción ' ' Este producto tiene historial de pedidos ' Se deshace la transacción Products ProductID UnitsInStock … … 1 2 3 4 15 10 65 20 Order Details OrderID 10522 10523 10524 10525 ProductID 10 2 41 7 UnitPrice 31.00 19.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 9 Products ProductID UnitsInStock … … 1 3 4 15 10 65 20 2 0
Consideraciones acerca del rendimiento Los desencadenadores trabajan rápidamente porque las tablas  insertadas  y  eliminadas  están en la caché El tiempo de ejecución está determinado por: Número de tablas a las que se hace referencia Número de filas afectadas Las acciones contenidas en un desencadenador forman parte de una transacción Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 Demostracion:   TRIGGERS (DESENCADENADORES, DISPARADORES)
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 CONCLUSIONES GENERALES
Ing. BARJ – IST – UPOLI - 2008 MUCHAS GRACIAS! [email_address] Ing. Bernardo Robelo http://bernardorobelo.blogspot.com
Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008

Programacion con SQL Server 2005

  • 1.
  • 2.
    Introducción a: Email: bernardo.robelo@gmail.com Ing. Bernardo Robelo
  • 3.
    Ing. BARJ -2008 PROCEDIMIENTOS FUNCIONES DE USUARIO VISTAS INTEGRIDAD DE DATOS TRIGGERS CURSORES AGENDA TRANSACT - SQL INDICES
  • 4.
    Ing. BARJ –2008 Transact-SQL ¿Que es?
  • 5.
    Transact-SQL Ing. BARJ– 2008 Lenguaje de Definición De Datos
  • 6.
    Tipos de datosdel sistema Numérico Entero Numérico exacto Numérico aproximado Moneda Fecha y hora Carácter y caracteres Unicode Binario Otros Ing. BARJ – IST – UPOLI - 2008
  • 7.
    ¿Qué son ?¿Pará que se utilizan? Tipos de datos definidos por el usuario Ing. BARJ – IST – UPOLI - 2008
  • 8.
    Tipos de datosdefinidos por el usuario Los tipos de datos definidos por el usuario están basados en los tipos de datos disponibles a través de SQL Server 2005. Los tipos de datos definidos por el usuario se pueden emplear para asegurar que un dato tenga las mismas características sobre múltiples tablas. Ing. BARJ – IST – UPOLI - 2008
  • 9.
    Implementación de laintegridad de datos Ing. BARJ – IST – UPOLI - 2008
  • 10.
    ¿Que es laintegridad de datos? Ing. BARJ – IST – UPOLI - 2008
  • 11.
    Tipos de integridadde datos Ing. BARJ – IST – UPOLI - 2008 Integridad de dominio ( columnas ) Integridad de entidad (filas) Integridad referencial ( entre tablas )
  • 12.
    Exigir integridad delos datos Integridad de datos declarativa Los criterios se definen en la definición del objeto Asegurada automáticamente por SQL Server Implementada mediante restricciones, valores predeterminados y reglas Integridad de datos procedimental Los criterios se definen en una secuencia de comandos Asegurada mediante secuencia de comandos Implementada mediante desencadenadores y procedimientos almacenados Ing. BARJ – IST – UPOLI - 2008
  • 13.
    Integridad de datosIng. BARJ – IST – UPOLI - 2008
  • 14.
    Determinación del tipode restricción que se va a utilizar Ing. BARJ – IST – UPOLI - 2008 Tipo de integridad Tipo de restricción Dominio DEFAULT CHECK REFERENTIAL Entidad PRIMARY KEY UNIQUE Referencial FOREIGN KEY CHECK
  • 15.
    Tipos de restriccionesRestricciones DEFAULT Restricciones CHECK Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Integridad referencial en cascada
  • 16.
    ¿Qué es unIndice Ing. BARJ – IST – UPOLI - 2008
  • 17.
    Tipos de IndiceCLUSTERED INDEX Por Defecto se crean indices con las Llaves Primarias Son como capitulos en el Libro Indice como la guia telefonica Mantiene juntas los numeros de Lineas NON-CLUSTERED INDEX Son como guiones para acceder a los datos Utilizado en llaves de varios campos Es el Indice o Glosario Son Atajos para acceder a los Datos Ing. BARJ – IST – UPOLI - 2008
  • 18.
    ¿Qué es unaVista? Ing. BARJ – IST – UPOLI - 2008
  • 19.
    Introducción a lasvistas Ing. BARJ – IST – UPOLI - 2008 EmployeeView Lastname Firstname Davolio Fuller Leverling Nancy Andrew Janet Employees EmployeeID LastName Firstname Title 1 2 3 Davolio Fuller Leverling Nancy Andrew Janet ~~~ ~~~ ~~~ Vista del usuario USE Northwind GO CREATE VIEW dbo. Employee View AS SELECT LastName , Firstname FROM Employees
  • 20.
    Ventajas de lasvistas Centrar el interés en los datos de los usuarios Centrarse sólo en los datos importantes o adecuados Limitar el acceso a los datos confidenciales Enmascarar la complejidad de la base de datos Ocultar el diseño de la base de datos compleja Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos heterogéneos Simplificar la administración de los permisos de usuario Mejorar el rendimiento Organizar los datos para exportarse a otras aplicaciones Ing. BARJ – IST – UPOLI - 2008
  • 21.
    Ejemplo: Vista de tablas combinadas Ing. BARJ – IST – UPOLI - 2008 OrderID 10663 10827 10427 10451 10515 CustomerID BONAP BONAP PICCO QUICK QUICK ~~~ ~~~ ~~~ ~~~ ~~~ RequiredDate 1997-09-24 1998-01-26 1997-02-24 1997-03-05 1997-05-07 ShippedDate 1997-10-03 1998-02-06 1997-03-03 1997-03-12 1997-05-23 Orders Customers ShipStatusView USE Northwind GO CREATE VIEW dbo.ShipStatusView AS SELECT OrderID, ShippedDate, ContactName FROM Customers c INNER JOIN Orders o ON c.CustomerID = O.CustomerID WHERE RequiredDate < ShippedDate CustomerID BONAP PICCO QUICK CompanyName Bon app' Piccolo und mehr QUICK-Stop ContactName Laurence Lebihan Georg Pipps Horst Kloss OrderID 10264 10271 10280 1996-08-21 1996-08-29 1996-09-11 ShippedDate 1996-08-23 1996-08-30 1996-09-12 ContactName Laurence Lebihan Georg Pipps Horst Kloss
  • 22.
    Uso de vistaspara dividir datos Puede utilizar las vistas para dividir los datos en varios servidores o instancias de SQL Server Cómo utiliza SQL Server las vistas para dividir datos Cómo las vistas divididas mejoran el rendimiento NO SE PUEDE No se puede incluir la cláusula ORDER BY No se puede incluir la palabra clave INTO Ing. BARJ – IST – UPOLI - 2008
  • 23.
    Ing. BARJ –IST – UPOLI - 2008 Práctica: Implementación de vistas
  • 24.
    Práctica: Implementación devistas Ing. BARJ – IST – UPOLI - 2008
  • 25.
    ¿Qué es un procedimiento almacenado? Ing. BARJ – IST – UPOLI - 2008
  • 26.
    Definición de procedimientosalmacenados Colecciones con nombre de instrucciones Transact-SQL Encapsulado de tareas repetitivas Aceptar parámetros de entrada y devolver valores Ing. BARJ – IST – UPOLI - 2008
  • 27.
    Ventajas de losprocedimientos almacenados Compartir la lógica de la aplicación Exposición de los detalles de las tablas de la base de datos Proporcionar mecanismos de seguridad Mejorar el rendimiento Reducir el tráfico de red Ing. BARJ – IST – UPOLI - 2008
  • 28.
    Creación de procedimientosalmacenados Utilice la instrucción CREATE PROCEDURE para crearlos en la base de datos activa Puede anidar hasta 32 niveles Use sp_help para mostrar información Ing. BARJ – IST – UPOLI - 2008 USE Northwind GO CREATE PROC dbo.OverdueOrders AS SELECT * FROM dbo.Orders WHERE RequiredDate < GETDATE() AND ShippedDate IS Null GO
  • 29.
    Ejecución de procedimientosalmacenados Ejecución de un procedimiento almacenado por separado Ejecución de un procedimiento almacenado en una instrucción INSERT Ing. BARJ – IST – UPOLI - 2008 EXEC OverdueOrders INSERT INTO Customers EXEC EmployeeCustomer
  • 30.
    Ejecución de procedimientosPaso de valores por el nombre del parámetro Paso de valores por posición Ing. BARJ – IST – UPOLI - 2008 EXEC AddCustomer 'ALFKI2', 'Alfreds Futterkiste', 'Maria Anders', 'Sales Representative', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany', '030-0074321' EXEC AddCustomer @CustomerID = 'ALFKI', @ContactName = 'Maria Anders', @CompanyName = 'Alfreds Futterkiste', @ContactTitle = 'Sales Representative', @Address = 'Obere Str. 57', @City = 'Berlin', @PostalCode = '12209', @Country = 'Germany', @Phone = '030-0074321'
  • 31.
    Devolución de valoresmediante parámetros de salida Ing. BARJ – IST – UPOLI - 2008 CREATE PROCEDURE dbo.mathtutor @m1 smallint, @m2 smallint, @result smallint OUTPUT AS SET @result = @m1* @m2 GO DECLARE @answer smallint EXECUTE mathtutor 5, 6, @answer OUTPUT SELECT 'The result is: ' , @answer The result is: 30 Resultados del procedimiento almacenado Ejecución del procedimiento almacenado Creación del procedimiento almacenado
  • 32.
    Control de mensajesde error La instrucción RETURN sale incondicionalmente de una consulta o procedimiento Ing. BARJ – IST – UPOLI - 2008
  • 33.
    Ing. BARJ –IST – UPOLI - 2008 Práctica Procedimientos Almacenados
  • 34.
    PROCEDIMIENTOS CON PARÁMETROSIng. BARJ – IST – UPOLI - 2008
  • 35.
    PROCEDIMIENTOS ALMACENADOS CONPARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
  • 36.
    PROCEDIMIENTOS ALMACENADOS CONPARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
  • 37.
    PROCEDIMIENTOS ALMACENADOS CONPARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
  • 38.
    Ing. BARJ –IST – UPOLI - 2008
  • 39.
    VARIABLES DE SALIDA EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
  • 40.
    VARIABLES DE SALIDA EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
  • 41.
    Ejemplos Ing. BARJ– IST – UPOLI - 2008
  • 42.
    Ejemplos Ing. BARJ– IST – UPOLI - 2008
  • 43.
    ¿Qué es unafunción definida por el usuario? Ing. BARJ – IST – UPOLI - 2008
  • 44.
    ¿Qué es unafunción definida por el usuario? Una función de usuario, se crea con el fin de automatizar una consulta que se realiza a menudo. Funciones escalares Similar a una función integrada Funciones con valores de tabla de varias instrucciones Contenido como un procedimiento almacenado Se hace referencia como una vista Funciones con valores de tabla en línea Similar a una vista con parámetros Devuelve una tabla como el resultado de una instrucción SELECT única Ing. BARJ – IST – UPOLI - 2008
  • 45.
    Uso de unafunción escalar definida por el usuario La cláusula RETURNS especifica el tipo de datos La función se define en un bloque BEGIN y END El tipo de devolución puede ser cualquier tipo de datos, excepto text, ntext, image, cursor o timestamp Ing. BARJ – IST – UPOLI - 2008
  • 46.
    Ing. BARJ –IST – UPOLI - 2008 Demostracion: Creación de funciones definidas por el usuario
  • 47.
    FUNCIONES DEFINIDAS POREL USUARIO Ing. BARJ – IST – UPOLI - 2008 Declare Table
  • 48.
    Funciones Escalares Veamosen el Enteprise Manager, la funcion creada, consultamos el apartado “Funciones definidas por el usuario” Ing. BARJ – IST – UPOLI - 2008
  • 49.
    Funciones de Tablasen Linea Ing. BARJ – IST – UPOLI - 2008
  • 50.
    Funciones de TablasCon Instrucciones Ing. BARJ – IST – UPOLI - 2008
  • 51.
    Funciones con Definicionde Esquema Ing. BARJ – IST – UPOLI - 2008
  • 52.
    Ing. BARJ –IST – UPOLI - 2008 Práctica: Creación de funciones definidas por el usuario
  • 53.
    Ejercicios Ing. BARJ– IST – UPOLI - 2008 Ver Solución
  • 54.
    Ejercicios Ing. BARJ– IST – UPOLI - 2008 Solución
  • 55.
    Ejercicios Ing. BARJ– IST – UPOLI - 2008
  • 56.
    Ejercicios Ing. BARJ– IST – UPOLI - 2008
  • 57.
    ¿Que es unTRIGGER? (DESENCADENADORES, DISPARADORES) Ing. BARJ – IST – UPOLI - 2008
  • 58.
    ¿Qué es undesencadenador? Un desencadenador es una clase especial de procedimiento almacenado que se ejecuta siempre que se intenta modificar los datos de una tabla que el desencadenador protege. Asociación a una tabla Invocación automática Imposibilidad de llamada directa Identificación con una transacción Ing. BARJ – IST – UPOLI - 2008
  • 59.
    Consideraciones acerca deluso de desencadenadores Los desencadenadores son reactivos, mientras que las restricciones son proactivas Las restricciones se comprueban antes Las tablas pueden tener varios desencadenadores para cualquier acción Comparación del estado de los datos antes y después de su modificación Ing. BARJ – IST – UPOLI - 2008
  • 60.
    Funcionamiento de losdesencadenadores anidados Ing. BARJ – IST – UPOLI - 2008 2 15 UnitsInStock + UnitsOnOrder es < ReorderLevel para ProductID 2 OrDe_Update La realización de un pedido provoca la ejecución del desencadenador OrDe_Update Se ejecuta la instrucción UPDATE en la tabla Products InStock_Update Products ProductID UnitsInStock … … 1 3 4 15 15 65 20 Se ejecuta el desencadenador InStock_Update Envía un mensaje Order_Details OrderID 10522 10523 10524 ProductID 10 41 7 UnitPrice 31.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 10525 19.00 2 0.2 5 2 15
  • 61.
    Desencadenadores recursivos Activaciónrecursiva de un desencadenador Tipos de desencadenadores recursivos Recursividad directa , que se da cuando un desencadenador se ejecuta y realiza una acción que lo activa de nuevo Recursividad indirecta , que se da cuando un desencadenador se activa y realiza una acción que activa un desencadenador de otra tabla Conveniencia del uso de los desencadenadores recursivos Ing. BARJ – IST – UPOLI - 2008
  • 62.
    Exigir reglas deempresa Ing. BARJ – IST – UPOLI - 2008 L os productos con pedidos pendientes no se pueden elimina r IF (Select Count (*) FROM [Order Details] INNER JOIN deleted ON [Order Details].ProductID = deleted.ProductID ) > 0 ROLLBACK TRANSACTION La instrucción DELETE se ejecuta en la tabla Product El código del desencadenador comprueba la tabla Order Details ' No puede procesarse la transacción ' ' Este producto tiene historial de pedidos ' Se deshace la transacción Products ProductID UnitsInStock … … 1 2 3 4 15 10 65 20 Order Details OrderID 10522 10523 10524 10525 ProductID 10 2 41 7 UnitPrice 31.00 19.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 9 Products ProductID UnitsInStock … … 1 3 4 15 10 65 20 2 0
  • 63.
    Consideraciones acerca delrendimiento Los desencadenadores trabajan rápidamente porque las tablas insertadas y eliminadas están en la caché El tiempo de ejecución está determinado por: Número de tablas a las que se hace referencia Número de filas afectadas Las acciones contenidas en un desencadenador forman parte de una transacción Ing. BARJ – IST – UPOLI - 2008
  • 64.
    Ing. BARJ –IST – UPOLI - 2008 Demostracion: TRIGGERS (DESENCADENADORES, DISPARADORES)
  • 65.
    TRIGGERS Ing. BARJ– IST – UPOLI - 2008
  • 66.
    TRIGGERS Ing. BARJ– IST – UPOLI - 2008
  • 67.
    TRIGGERS Ing. BARJ– IST – UPOLI - 2008
  • 68.
    Ing. BARJ –IST – UPOLI - 2008
  • 69.
    TRIGGERS Ing. BARJ– IST – UPOLI - 2008
  • 70.
    TRIGGERS Ing. BARJ– IST – UPOLI - 2008
  • 71.
    Ing. BARJ –IST – UPOLI - 2008
  • 72.
    Ing. BARJ –IST – UPOLI - 2008 CONCLUSIONES GENERALES
  • 73.
    Ing. BARJ –IST – UPOLI - 2008 MUCHAS GRACIAS! [email_address] Ing. Bernardo Robelo http://bernardorobelo.blogspot.com
  • 74.
    Ing. BARJ –IST – UPOLI - 2008
  • 75.
    Ing. BARJ –IST – UPOLI - 2008
  • 76.
    Ing. BARJ –IST – UPOLI - 2008

Notas del editor

  • #6 DDL – Data Definition Languaje
  • #12 De dominio controlado por el tipo de datos y los valores que puede aceptar
  • #40 Ver Diferencia cuando le quitamos el PRINT @TOTAL
  • #43 Lo de la TABLA CONTROL es para los TRIGGERS tambien, para crear una vitacora
  • #52 IMPORTANTE: El esquema de propietario de la tablas deben estar definidas en la funcion. SINO da error.
  • #59 Asociación a una tabla Los desencadenadores se definen para una tabla específica, denominada tabla del desencadenador. Invocación automática Cuando se intenta insertar, actualizar o eliminar datos de una tabla en la que se ha definido un desencadenador para esa acción específica, el desencadenador se ejecuta automáticamente. No es posible evitar su ejecución. Imposibilidad de llamada directa A diferencia de los procedimientos almacenados del sistema normales, no es posible invocar directamente los desencadenadores, que tampoco pasan ni aceptan parámetros.