SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Base de Datos


Profesor:
MSC Luis Serna Jherry
Funciones,
   Procedimientos Almacenados,
   P    di i      Al      d
   Disparadores Triggers



Profesor:
MS. Luis Serna Jherry
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.
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 datos
reutilizable almacenado que realiza alguna operación en la
base de datos.
Contiene código SQL que puede, entre otras cosas, insertar,
actualizar o eliminar registros.
Los procedimientos almacenados pueden alterar la
     p                             p
estructura de la base de datos. Por ejemplo, se puede utilizar
un procedimiento almacenado para añadir una columna de
tabla o borrar una tabla.
Un Store Procedure también puede llamar a otro Store
Procedure, así como aceptar entradas y devolver múltiples
valores al procedimiento llamado en forma de parámetros de
salida.
salida
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)
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
Tipos de funciones

 Scalar Functions: Retorna un resultado
 con un valor escalar.
 Table-Value
 Table Value Functions: Retorna el
 resultado en forma de tabla.
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).
Sintaxis de una Funcion Escalar
               El Nombre debe ser único




               Puede o no tener parámetros
                                             Tipo de parámetro



Tipo de dato
de retorno
                              Cuerpo


                                                   Opciones
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
  END
propietario: cuenta de usuario que crea la función
nombre: 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ámetro
Valor_por_defecto: valor asignado por defecto al parámetro
tipo_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
Ejemplo Función Escalar
CREATE FUNCTION Calcular_Pedido (@codigo int)
RETURNS decimal (10,2)
AS
BEGIN
   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 @precio
END
GO

-- Ej
   Ejecución
         ió
SELECT dbo.Calcular_Pedido (1)
Tabled-Value Functions
 Cumplen las mismas reglas de las
 Scalar Functions.
 Retorna una tabla como salida.
 Generalmente se usan en la cláusula
 FROM.
Sintaxis de una Table-Value
Functions




              Cuerpo
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
 RETURN

propietario: cuenta de usuario que crea la función
nombre: 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ámetro
valor_por_defecto:
valor por defecto: valor asignado por defecto al parámetro
variable retorno: variable de retorno de la función
Definicion_tabla: definición de la tabla que devuelve la función
Ejemplo Función que devuelve
 una Tabla
CREATE FUNCTION PedidosPorProveedor (@codigo char(4))
RETURNS TABLE
AS
RETURN (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ón
SELECT dbo PedidosPorProveedor('0010')
          dbo.PedidosPorProveedor( 0010 )
Funciones Deterministicas y No
Deterministicas
 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().
Implementando un Stored
   p
Procedure
 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
Sintaxis de un Stored
        Procedure

CREATE 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
Ejemplo procedimiento sin
  parámetros
CREATE PROCEDURE dameProveedores AS
SELECT codigpro, nombrpro, direcpro, cpostpro, localpro,
           gp ,       p ,       p , p p ,           p ,
telefpro
FROM Proveedores;
Go


-- Ejecución
exec dameProveedores;
Ejemplo procedimiento con
     parámetros
CREATE PROCEDURE upd_precio_articulo @ipc numeric(3,2) AS
BEGIN TRANSACTION
     update articulos set preunart = preunart + (preunart*@ipc/100)
       p                  p          p          (p          p /   )
     where preunart is not null
     if @@ERROR <> 0 GOTO on_error
on_error:
     begin
        ROLLBACK TRANSACTION
        RAISERROR ('No se han modificado los precios,16,1)
     end
fin:
Go
-- Ejecución
exec upd_precio_articulo 3.2
Asignación de permisos a un
   g          p
Stored 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.
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.
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
Sintaxis de un DML Trigger
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.
                                                      q
campo: campo de la tabla o vista afectada por el desencadenador .
instrucciones sql: reglas de negocio que se requieren especificar por
medio de SQL
Ejemplo No pedir un artículo
descatalogado
CREATE TRIGGER tr_lineas ON db Li
                      li       dbo.Lineas FOR INSERT, UPDATE
                                                INSERT
AS
BEGIN
     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 fin
on_error:
on error:
     ROLLBACK TRANSACTION
fin:
END
DDL Triggers
 El propósito principal es auditar
 acciones realizadas en una base de
 datos.
Sintaxis de un DDL Trigger
Sintaxis de un DDL Trigger

CREATE TRIGGER nombre
ON { 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 por
i t     i       l     l d         i             i          ifi
medio de SQL
tipo_evento: create, alter,...
metodo: ensamblado clase metodo
        ensamblado.clase.metodo
<ddl_trigger_option> ::= [ ENCRYPTION ] | [ EXECUTE AS Clause ]
Ejemplo Notificar si el stock
     alcanza el mínimo establecido

CREATE TRIGGER tr_articulos ON articulos
FOR UPDATE
AS BEGIN
   IF UPDATE (stockart) BEGIN
       INSERT INTO eventos (fecha, motivo)
                             (fecha
          SELECT getdate(), 'Stock minimo alcanzado ' + codigart
          FROM inserted
          WHERE stockart<=stockmin
   END
END
Eliminación
Para eliminar objetos que existan en la base de
datos, Su sintaxis es:
     DROP { TABLE nombre |
            INDEX nombre |
            VIEW nombre |
            TRIGGER nombre |
            RULE nombre |
            DATABASE nombre | b
            PROCEDURE nombre |
            FUNCTION nombre |
            .... Otros objetos .. }

Contenu connexe

Tendances

Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenadosbat1820
 
MANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONMANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONSergio Perez
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)José Toro
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)José Toro
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)José Toro
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)José Toro
 
Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Jair Ospino Ardila
 
Teoria procedimientos almacenados
Teoria procedimientos almacenadosTeoria procedimientos almacenados
Teoria procedimientos almacenadoshirmaroxana13
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)José Toro
 
Triggers o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadoresPablo Jose
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggersdemoiselle
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysqlpolar
 

Tendances (20)

Disparadores
DisparadoresDisparadores
Disparadores
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
MANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICIONMANEJO DE SENTENCIAS DE DEFINICION
MANEJO DE SENTENCIAS DE DEFINICION
 
Sql dataadapter
Sql dataadapterSql dataadapter
Sql dataadapter
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 
Postgres trigger
Postgres triggerPostgres trigger
Postgres trigger
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL
 
minas
minas minas
minas
 
Teoria procedimientos almacenados
Teoria procedimientos almacenadosTeoria procedimientos almacenados
Teoria procedimientos almacenados
 
Triggers
TriggersTriggers
Triggers
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
 
Ajax
AjaxAjax
Ajax
 
Triggers o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadores
 
Sql connection
Sql connectionSql connection
Sql connection
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysql
 

En vedette (18)

Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Arquitecturas de bd
Arquitecturas de bdArquitecturas de bd
Arquitecturas de bd
 
Modelo er
Modelo erModelo er
Modelo er
 
Sql basico parte_ii_
Sql basico parte_ii_Sql basico parte_ii_
Sql basico parte_ii_
 
Sql basico parte_ii_
Sql basico parte_ii_Sql basico parte_ii_
Sql basico parte_ii_
 
Transacciones y seguridad
Transacciones y seguridadTransacciones y seguridad
Transacciones y seguridad
 
Arquitecturas de bd
Arquitecturas de bdArquitecturas de bd
Arquitecturas de bd
 
Modelo er
Modelo erModelo er
Modelo er
 
Tienda de ropa
Tienda de ropaTienda de ropa
Tienda de ropa
 
Ejercicios del modelo entidad relacion
Ejercicios del modelo entidad relacionEjercicios del modelo entidad relacion
Ejercicios del modelo entidad relacion
 
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
 
El modelo relacional
El modelo relacionalEl modelo relacional
El modelo relacional
 
Sql basico parte_i_
Sql basico parte_i_Sql basico parte_i_
Sql basico parte_i_
 
Modelado con erwin
Modelado con erwinModelado con erwin
Modelado con erwin
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Creación de triggers mediante escritorio remoto en MYSQL
Creación de triggers mediante escritorio remoto en MYSQLCreación de triggers mediante escritorio remoto en MYSQL
Creación de triggers mediante escritorio remoto en MYSQL
 
Bitácora de base de datos
Bitácora de base de datosBitácora de base de datos
Bitácora de base de datos
 
BASES DE DATOS DISTRIBUIDAS
BASES DE DATOS DISTRIBUIDASBASES DE DATOS DISTRIBUIDAS
BASES DE DATOS DISTRIBUIDAS
 

Similaire à Funciones store proc_triggers

Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosJosé Antonio Sandoval Acosta
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)José Toro
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datosAdriana Becerra
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCCarlos Hernando
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebsricardosusa5
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005pabloesp
 
Trabajo grupal - Base de Datos
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de DatosMIROSLAVY
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion UnoRoberto
 
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Universidad Nacional de Piura
 
Base de-datos-ii
Base de-datos-iiBase de-datos-ii
Base de-datos-iiLuis Carmen
 

Similaire à Funciones store proc_triggers (20)

Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)
 
Disparadores 1213820550525607-9
Disparadores 1213820550525607-9Disparadores 1213820550525607-9
Disparadores 1213820550525607-9
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datos
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 
Bases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBCBases de Datos en Java - Intro a JDBC
Bases de Datos en Java - Intro a JDBC
 
Amnel
AmnelAmnel
Amnel
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebs
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Trabajo grupal - Base de Datos
Trabajo grupal - Base de DatosTrabajo grupal - Base de Datos
Trabajo grupal - Base de Datos
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Objeto sqlcommand
Objeto sqlcommandObjeto sqlcommand
Objeto sqlcommand
 
Taller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DMLTaller de Base de Datos - Unidad 3 lenguage DML
Taller de Base de Datos - Unidad 3 lenguage DML
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
PROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOSPROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOS
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion Uno
 
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
 
Base de-datos-ii
Base de-datos-iiBase de-datos-ii
Base de-datos-ii
 

Plus de Luis Jherry

Suscripciones de cable
Suscripciones de cableSuscripciones de cable
Suscripciones de cableLuis Jherry
 
Sistema de organización de eventos
Sistema de organización de eventosSistema de organización de eventos
Sistema de organización de eventosLuis Jherry
 
Sistema de control y seguimiento de trasplantes renales
Sistema de control y seguimiento de trasplantes renalesSistema de control y seguimiento de trasplantes renales
Sistema de control y seguimiento de trasplantes renalesLuis Jherry
 
Selección de personal
Selección de personalSelección de personal
Selección de personalLuis Jherry
 
Planificacion mensual en una industria medico
Planificacion mensual en una industria medicoPlanificacion mensual en una industria medico
Planificacion mensual en una industria medicoLuis Jherry
 
Pedidos en feria
Pedidos en feriaPedidos en feria
Pedidos en feriaLuis Jherry
 
Paquete turístico
Paquete turísticoPaquete turístico
Paquete turísticoLuis Jherry
 
Organización de congresos
Organización de congresosOrganización de congresos
Organización de congresosLuis Jherry
 
Obras de construcción
Obras de construcciónObras de construcción
Obras de construcciónLuis Jherry
 
Instituto de capacitación en ti
Instituto de capacitación en tiInstituto de capacitación en ti
Instituto de capacitación en tiLuis Jherry
 
Explotaciones mineras
Explotaciones minerasExplotaciones mineras
Explotaciones minerasLuis Jherry
 
Eventos científicos
Eventos científicosEventos científicos
Eventos científicosLuis Jherry
 

Plus de Luis Jherry (20)

Telefonos
TelefonosTelefonos
Telefonos
 
Suscripciones
SuscripcionesSuscripciones
Suscripciones
 
Suscripciones de cable
Suscripciones de cableSuscripciones de cable
Suscripciones de cable
 
Software s
Software sSoftware s
Software s
 
Sistema escolar
Sistema escolarSistema escolar
Sistema escolar
 
Sistema de organización de eventos
Sistema de organización de eventosSistema de organización de eventos
Sistema de organización de eventos
 
Sistema de control y seguimiento de trasplantes renales
Sistema de control y seguimiento de trasplantes renalesSistema de control y seguimiento de trasplantes renales
Sistema de control y seguimiento de trasplantes renales
 
Selección de personal
Selección de personalSelección de personal
Selección de personal
 
Planificacion mensual en una industria medico
Planificacion mensual en una industria medicoPlanificacion mensual en una industria medico
Planificacion mensual en una industria medico
 
Pedidos en feria
Pedidos en feriaPedidos en feria
Pedidos en feria
 
Paquete turístico
Paquete turísticoPaquete turístico
Paquete turístico
 
Organización de congresos
Organización de congresosOrganización de congresos
Organización de congresos
 
Obras de construcción
Obras de construcciónObras de construcción
Obras de construcción
 
Museo
MuseoMuseo
Museo
 
Instituto de capacitación en ti
Instituto de capacitación en tiInstituto de capacitación en ti
Instituto de capacitación en ti
 
Hostal
HostalHostal
Hostal
 
Hostal ii
Hostal iiHostal ii
Hostal ii
 
Gimnasio
GimnasioGimnasio
Gimnasio
 
Explotaciones mineras
Explotaciones minerasExplotaciones mineras
Explotaciones mineras
 
Eventos científicos
Eventos científicosEventos científicos
Eventos científicos
 

Funciones store proc_triggers

  • 1. Base de Datos Profesor: MSC Luis Serna Jherry
  • 2. Funciones, Procedimientos Almacenados, P di i Al d Disparadores Triggers Profesor: MS. Luis Serna Jherry
  • 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. Que es una Función. Es una porción encapsulada de código que puede ser reutilizada por diferentes programas.
  • 5. Que es un Stored Procedure. Un Store Procedure es un elemento de base de datos reutilizable almacenado que realiza alguna operación en la base de datos. Contiene código SQL que puede, entre otras cosas, insertar, actualizar o eliminar registros. Los procedimientos almacenados pueden alterar la p p estructura de la base de datos. Por ejemplo, se puede utilizar un procedimiento almacenado para añadir una columna de tabla o borrar una tabla. Un Store Procedure también puede llamar a otro Store Procedure, así como aceptar entradas y devolver múltiples valores al procedimiento llamado en forma de parámetros de salida. salida
  • 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. 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. 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. 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. Sintaxis de una Funcion Escalar El Nombre debe ser único Puede o no tener parámetros Tipo de parámetro Tipo de dato de retorno Cuerpo Opciones
  • 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 END propietario: cuenta de usuario que crea la función nombre: 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ámetro Valor_por_defecto: valor asignado por defecto al parámetro tipo_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. Ejemplo Función Escalar CREATE FUNCTION Calcular_Pedido (@codigo int) RETURNS decimal (10,2) AS BEGIN 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 @precio END GO -- Ej Ejecución ió SELECT dbo.Calcular_Pedido (1)
  • 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. Sintaxis de una Table-Value Functions Cuerpo
  • 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 RETURN propietario: cuenta de usuario que crea la función nombre: 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ámetro valor_por_defecto: valor por defecto: valor asignado por defecto al parámetro variable retorno: variable de retorno de la función Definicion_tabla: definición de la tabla que devuelve la función
  • 16. Ejemplo Función que devuelve una Tabla CREATE FUNCTION PedidosPorProveedor (@codigo char(4)) RETURNS TABLE AS RETURN (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ón SELECT dbo PedidosPorProveedor('0010') dbo.PedidosPorProveedor( 0010 )
  • 17. Funciones Deterministicas y No Deterministicas 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. Implementando un Stored p Procedure 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. Sintaxis de un Stored Procedure CREATE 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. Ejemplo procedimiento sin parámetros CREATE PROCEDURE dameProveedores AS SELECT codigpro, nombrpro, direcpro, cpostpro, localpro, gp , p , p , p p , p , telefpro FROM Proveedores; Go -- Ejecución exec dameProveedores;
  • 21. Ejemplo procedimiento con parámetros CREATE PROCEDURE upd_precio_articulo @ipc numeric(3,2) AS BEGIN TRANSACTION update articulos set preunart = preunart + (preunart*@ipc/100) p p p (p p / ) where preunart is not null if @@ERROR <> 0 GOTO on_error on_error: begin ROLLBACK TRANSACTION RAISERROR ('No se han modificado los precios,16,1) end fin: Go -- Ejecución exec upd_precio_articulo 3.2
  • 22. Asignación de permisos a un g p Stored 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. 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. 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. Sintaxis de un DML Trigger
  • 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. q campo: campo de la tabla o vista afectada por el desencadenador . instrucciones sql: reglas de negocio que se requieren especificar por medio de SQL
  • 27. Ejemplo No pedir un artículo descatalogado CREATE TRIGGER tr_lineas ON db Li li dbo.Lineas FOR INSERT, UPDATE INSERT AS BEGIN 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 fin on_error: on error: ROLLBACK TRANSACTION fin: END
  • 28. DDL Triggers El propósito principal es auditar acciones realizadas en una base de datos.
  • 29. Sintaxis de un DDL Trigger
  • 30. Sintaxis de un DDL Trigger CREATE TRIGGER nombre ON { 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 por i t i l l d i i ifi medio de SQL tipo_evento: create, alter,... metodo: ensamblado clase metodo ensamblado.clase.metodo <ddl_trigger_option> ::= [ ENCRYPTION ] | [ EXECUTE AS Clause ]
  • 31. Ejemplo Notificar si el stock alcanza el mínimo establecido CREATE TRIGGER tr_articulos ON articulos FOR UPDATE AS BEGIN IF UPDATE (stockart) BEGIN INSERT INTO eventos (fecha, motivo) (fecha SELECT getdate(), 'Stock minimo alcanzado ' + codigart FROM inserted WHERE stockart<=stockmin END END
  • 32. Eliminación Para eliminar objetos que existan en la base de datos, Su sintaxis es: DROP { TABLE nombre | INDEX nombre | VIEW nombre | TRIGGER nombre | RULE nombre | DATABASE nombre | b PROCEDURE nombre | FUNCTION nombre | .... Otros objetos .. }