Base de DatosProfesor:MSC Luis Serna Jherry
Funciones,   Procedimientos Almacenados,   P    di i      Al      d   Disparadores TriggersProfesor:MS. Luis Serna Jherry
Contenido Que es una Function (Función).                           ó Q Que es un Stored Procedure (Procedimiento Almacenad...
Que es una Función. Es una porción encapsulada de código que puede ser reutilizada por diferentes programas.
Que es un Stored Procedure.Un Store Procedure es un elemento de base de datosreutilizable almacenado que realiza alguna op...
Que es un Trigger Un trigger o un disparador en una Base de datos es un evento que se ejecuta automáticamente cuando se cu...
Implementando una Función SQL Server contiene funciones ya construidas que pueden ser utilizadas dentro de las aplicacione...
Tipos de funciones Scalar Functions: Retorna un resultado con un valor escalar. Table-Value Table Value Functions: Retorna...
Scalar Functions Pueden aceptar 0 o mas parámetros de entrada. Retorna solo un valor escalar                       escalar...
Sintaxis de una Funcion Escalar               El Nombre debe ser único               Puede o no tener parámetros          ...
Sintaxis de una Funcion Escalar  CREATE FUNCTION [ propietario. ] nombre  ( [ { @parametro [AS] tipo_dato [ = valor_por_de...
Ejemplo Función EscalarCREATE FUNCTION Calcular_Pedido (@codigo int)RETURNS decimal (10,2)ASBEGIN   DECLARE @precio money ...
Tabled-Value Functions Cumplen las mismas reglas de las Scalar Functions. Retorna una tabla como salida. Generalmente se u...
Sintaxis de una Table-ValueFunctions              Cuerpo
Sintaxis de una Table-Value    Functions CREATE FUNCTION [propietario.] nombre     ([ { @parametro [AS] tipo_dato [ = valo...
Ejemplo Función que devuelve una TablaCREATE FUNCTION PedidosPorProveedor (@codigo char(4))RETURNS TABLEASRETURN (SELECT c...
Funciones Deterministicas y NoDeterministicas Funciones Deterministicas: retornan siempre para el o los mismos parámetros ...
Implementando un Stored   pProcedure Es la estructura de programación más usada dentro de una base de datos. Un procedimie...
Sintaxis de un Stored        ProcedureCREATE PROC [ EDURE ] nombre    [ { @parametros tipo dato }[ = valor por defecto ] [...
Ejemplo procedimiento sin  parámetrosCREATE PROCEDURE dameProveedores ASSELECT codigpro, nombrpro, direcpro, cpostpro, loc...
Ejemplo procedimiento con     parámetrosCREATE PROCEDURE upd_precio_articulo @ipc numeric(3,2) ASBEGIN TRANSACTION     upd...
Asignación de permisos a un   g          pStored Procedure Como en todos los objetos y operaciones en la base de datos, se...
Implementando Triggers Es una implementación de Transacciones- SQL o un proceso batch que responde a un evento d t d l bas...
DML Triggers Un DML trigger no puede ser ejecutado por un usuario. Puede estar asociado a una tabla o una vista en un even...
Sintaxis de un DML Trigger
Sintaxis de un DML Trigger                           gg  CREATE TRIGGER nombre  ON { tabla | vista }  { {{ FOR | INSTEAD O...
Ejemplo No pedir un artículodescatalogadoCREATE TRIGGER tr_lineas ON db Li                      li       dbo.Lineas FOR IN...
DDL Triggers El propósito principal es auditar acciones realizadas en una base de datos.
Sintaxis de un DDL Trigger
Sintaxis de un DDL TriggerCREATE TRIGGER nombreON { ALL SERVER | DATABASE }[ WITH <ddl_trigger option> [ ,...n ] ]{ FOR I ...
Ejemplo Notificar si el stock     alcanza el mínimo establecidoCREATE TRIGGER tr_articulos ON articulosFOR UPDATEAS BEGIN ...
EliminaciónPara eliminar objetos que existan en la base dedatos, Su sintaxis es:     DROP { TABLE nombre |            INDE...
Próxima SlideShare
Cargando en…5
×

Funciones store proc_triggers

2.155 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
2.155
En SlideShare
0
De insertados
0
Número de insertados
5
Acciones
Compartido
0
Descargas
75
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Funciones store proc_triggers

  1. 1. Base de DatosProfesor:MSC Luis Serna Jherry
  2. 2. Funciones, Procedimientos Almacenados, P di i Al d Disparadores TriggersProfesor:MS. Luis Serna Jherry
  3. 3. Contenido Que es una Function (Función). ó Q Que es un Stored Procedure (Procedimiento Almacenado). Que es un Trigger (Disparador ). Implementar Functions. Implementar Stored Procedures Procedures. Implementar Triggers.
  4. 4. Que es una Función. Es una porción encapsulada de código que puede ser reutilizada por diferentes programas.
  5. 5. Que es un Stored Procedure.Un Store Procedure es un elemento de base de datosreutilizable almacenado que realiza alguna operación en labase de datos.Contiene código SQL que puede, entre otras cosas, insertar,actualizar o eliminar registros.Los procedimientos almacenados pueden alterar la p pestructura de la base de datos. Por ejemplo, se puede utilizarun procedimiento almacenado para añadir una columna detabla o borrar una tabla.Un Store Procedure también puede llamar a otro StoreProcedure, así como aceptar entradas y devolver múltiplesvalores al procedimiento llamado en forma de parámetros desalida.salida
  6. 6. Que es un Trigger Un trigger o un disparador en una Base de datos es un evento que se ejecuta automáticamente cuando se cumple una condición establecida al realizar una operación de inserción (INSERT), ió d i ió (INSERT) actualización (UPDATE) o borrado (DELETE). (DELETE)
  7. 7. Implementando una Función SQL Server contiene funciones ya construidas que pueden ser utilizadas dentro de las aplicaciones para proveer funcionalidad común (como las funciones de fecha y hora). Un ejemplo de una función es GETDATE(), la cual retorna la fecha y hora actual del sistema. sistema
  8. 8. Tipos de funciones Scalar Functions: Retorna un resultado con un valor escalar. Table-Value Table Value Functions: Retorna el resultado en forma de tabla.
  9. 9. Scalar Functions Pueden aceptar 0 o mas parámetros de entrada. Retorna solo un valor escalar escalar. Generalmente se usan como campos de columnas y en las condiciones de la cláusula Where. No se puede utilizar una función para cambiar el estado de un objeto de la base de datos (no puede insertar, modificar, eliminar datos de una tabla. No puede borrar tablas u otros objetos de la base de datos) datos).
  10. 10. Sintaxis de una Funcion Escalar El Nombre debe ser único Puede o no tener parámetros Tipo de parámetroTipo de datode retorno Cuerpo Opciones
  11. 11. Sintaxis de una Funcion Escalar CREATE FUNCTION [ propietario. ] nombre ( [ { @parametro [AS] tipo_dato [ = valor_por_defecto ] } [ , ... n ] ] ) RETURNS tipo_dato_valor_retorno AS BEGIN --cuerpo de la función, TSQL RETURN valor_retorno ENDpropietario: cuenta de usuario que crea la funciónnombre: es el nombre de la función que se va a crear.parametro: parámetros de entrada de la función á óTipo_dato: tipo de dato asociado a cada parámetroValor_por_defecto: valor asignado por defecto al parámetrotipo_dato_valor_retorno:tipo dato valor retorno: tipo de dato asociado al valor de retorno retorno.valor retorno: valor de retorno de la función
  12. 12. Ejemplo Función EscalarCREATE FUNCTION Calcular_Pedido (@codigo int)RETURNS decimal (10,2)ASBEGIN DECLARE @precio money DECLARE @iva float SELECT @precio= sum(totallin) from lineas WHERE numped=@codigo SELECT @iva=ivaped from pedidos WHERE numped=@codigo SET @precio= (@precio* (@iva/100))+@precio RETURN @precioENDGO-- Ej Ejecución ióSELECT dbo.Calcular_Pedido (1)
  13. 13. Tabled-Value Functions Cumplen las mismas reglas de las Scalar Functions. Retorna una tabla como salida. Generalmente se usan en la cláusula FROM.
  14. 14. Sintaxis de una Table-ValueFunctions Cuerpo
  15. 15. Sintaxis de una Table-Value Functions CREATE FUNCTION [propietario.] nombre ([ { @parametro [AS] tipo_dato [ = valor_por_defecto ] } [ ,…n]]) RETURNS @variable_retorno TABLE < definicion_tabla > AS BEGIN --cuerpo de la función, TSQL RETURNpropietario: cuenta de usuario que crea la funciónnombre: es el nombre de la función que se va a crear.parametro: parámetros de entrada de la funcióntipo_dato: tipo de dato asociado a cada parámetrovalor_por_defecto:valor por defecto: valor asignado por defecto al parámetrovariable retorno: variable de retorno de la funciónDefinicion_tabla: definición de la tabla que devuelve la función
  16. 16. Ejemplo Función que devuelve una TablaCREATE FUNCTION PedidosPorProveedor (@codigo char(4))RETURNS TABLEASRETURN (SELECT count(numped) numero, nombrpro FROM pedidos p, proveedores pr WHERE pr codigpro=@codigo and pr.codigpro @codigo p.codigpro = pr.codigpro GROUP BY nombrpro)GO-- EjecuciónSELECT dbo PedidosPorProveedor(0010) dbo.PedidosPorProveedor( 0010 )
  17. 17. Funciones Deterministicas y NoDeterministicas Funciones Deterministicas: retornan siempre para el o los mismos parámetros de entrada, el mismo valor de resultado. t d l i l d lt d Ejemplo: el coseno de un ángulo. Funciones No Deterministicas: retorna diferentes valores de resultado cada vez que se les llaman. Ejemplo la función GetDate().
  18. 18. Implementando un Stored pProcedure Es la estructura de programación más usada dentro de una base de datos. Un procedimiento es un nombre asociado a proceso batch de instrucciones SQL que son mantenidas y ejecutadas en el servidor. servidor Los stored procedures pueden retornar un valor escalar, o un conjunto de valores. , j Es la interfaz necesaria que las aplicaciones deben usar para acceder a los datos dentro de d una base de datos. b d d t
  19. 19. Sintaxis de un Stored ProcedureCREATE PROC [ EDURE ] nombre [ { @parametros tipo dato }[ = valor por defecto ] [ OUTPUT ]] [,...n ] tipo_dato [ n [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ]AS instrucciones sql [ ...n ] q nombre: es el nombre del procedimiento que se va a crear. parámetros: parámetros de entrada y salida del procedimiento á á d d ld d l d tipo_dato: tipo de dato asociado al parámetro. valorpor_defecto: valor asignado por defecto al parámetro instrucciones sql: instrucciones SQL
  20. 20. Ejemplo procedimiento sin parámetrosCREATE PROCEDURE dameProveedores ASSELECT codigpro, nombrpro, direcpro, cpostpro, localpro, gp , p , p , p p , p ,telefproFROM Proveedores;Go-- Ejecuciónexec dameProveedores;
  21. 21. Ejemplo procedimiento con parámetrosCREATE PROCEDURE upd_precio_articulo @ipc numeric(3,2) ASBEGIN TRANSACTION update articulos set preunart = preunart + (preunart*@ipc/100) p p p (p p / ) where preunart is not null if @@ERROR <> 0 GOTO on_erroron_error: begin ROLLBACK TRANSACTION RAISERROR (No se han modificado los precios,16,1) endfin:Go-- Ejecuciónexec upd_precio_articulo 3.2
  22. 22. Asignación de permisos a un g pStored Procedure Como en todos los objetos y operaciones en la base de datos, se deben asignar permisos para que un usuario pueda ejecutar un stored procedure. Cuando se asigna permisos en un Stored Procedure, automáticamente se delegan permisos sobre los objetos y comandos utilizados dentro del Stored Procedure.
  23. 23. Implementando Triggers Es una implementación de Transacciones- SQL o un proceso batch que responde a un evento d t d l base de datos. t dentro de la b d d t Existen 2 tipos: Data Manipulation Languaje (DML): se ejecutan con las instrucciones INSERT, UPDATE or DELETE. Data Definition Languaje (DDL) se ejecutan D t D fi iti L j (DDL): j t cuando se crean, alteran o borran objetos de la base de datos.
  24. 24. DML Triggers Un DML trigger no puede ser ejecutado por un usuario. Puede estar asociado a una tabla o una vista en un evento particular definido. Modos de ejecución: AFTER: Se ejecuta cuando se completa exitosamente todas las validaciones y operaciones de una acción. INSTEAD OF: Se ejecuta sobre la operación definida, sin importar si se completo toda la acción. No N se puede crear, modificar, borrar, realizar o d difi b li restaurar una base de datos mediante un trigger. No puede crear alterar tablas o índices mediante un trigger. trigger
  25. 25. Sintaxis de un DML Trigger
  26. 26. Sintaxis de un DML Trigger gg CREATE TRIGGER nombre ON { tabla | vista } { {{ FOR | INSTEAD OF }{ [ INSERT] [,] [ UPDATE] [,] [ DELETE] } [ NOT FOR REPLICATION ] AS [ { IF UPDATE (campo) [ { AND | OR } UPDATE (campo) ] [ ...n ] }] instrucciones_sql instrucciones sql [ ...n ] } n }nombre: es el nombre del desencadenador que se va a crear.tabla/vista: es el nombre de una tabla/vista sobre la que se crea. qcampo: campo de la tabla o vista afectada por el desencadenador .instrucciones sql: reglas de negocio que se requieren especificar pormedio de SQL
  27. 27. Ejemplo No pedir un artículodescatalogadoCREATE TRIGGER tr_lineas ON db Li li dbo.Lineas FOR INSERT, UPDATE INSERTASBEGIN DECLARE @valor int DECLARE @errmsg char(255) SELECT @valor=count(*) FROM inserted WHERE dbo.ArticuloDescatalogado(codigart)!=0 IF (@valor) > 0 BEGIN set @errmsg = No puede seleccionar un articulo descatalogado RAISERROR ( @errmsg,16,1) g, , ) GOTO on_error END GOTO finon_error:on error: ROLLBACK TRANSACTIONfin:END
  28. 28. DDL Triggers El propósito principal es auditar acciones realizadas en una base de datos.
  29. 29. Sintaxis de un DDL Trigger
  30. 30. Sintaxis de un DDL TriggerCREATE TRIGGER nombreON { ALL SERVER | DATABASE }[ WITH <ddl_trigger option> [ ,...n ] ]{ FOR I AFTER } { tipo_evento } [ ,...n ]AS { instrucciones_sql [ ; ] [ ,...n ] I EXTERNAL NAME < metodo > [ ; ] }nombre: es el nombre del desencadenador que se va a crear.instrucciones sql: reglas de negocio que se requieren especificar pori t i l l d i i ifimedio de SQLtipo_evento: create, alter,...metodo: ensamblado clase metodo ensamblado.clase.metodo<ddl_trigger_option> ::= [ ENCRYPTION ] | [ EXECUTE AS Clause ]
  31. 31. Ejemplo Notificar si el stock alcanza el mínimo establecidoCREATE TRIGGER tr_articulos ON articulosFOR UPDATEAS BEGIN IF UPDATE (stockart) BEGIN INSERT INTO eventos (fecha, motivo) (fecha SELECT getdate(), Stock minimo alcanzado + codigart FROM inserted WHERE stockart<=stockmin ENDEND
  32. 32. EliminaciónPara eliminar objetos que existan en la base dedatos, Su sintaxis es: DROP { TABLE nombre | INDEX nombre | VIEW nombre | TRIGGER nombre | RULE nombre | DATABASE nombre | b PROCEDURE nombre | FUNCTION nombre | .... Otros objetos .. }

×