UNIVERSIDAD NACIONAL AUTÓNOMA DE HONDURAS FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA EN SISTEMAS BASE DE DATOS II PROCEDIMIENTOS ALMACENADOS Un stored procedure es una secuencia ordenada de instrucciones SQL cuyo código se guarda en la base de datos y tiene como objetivo realizar una acción específica al ser invocados para su ejecución. Su sintaxis es la siguiente: CREATE PROCEDURE
, ,… AS DECLARE ; BEGIN END;
Ejemplo: CREATE PROCEDURE dbo dbo. .Departamentos -- Add the parameters for the stored procedure here @pais int AS DECLARE @id int int= =@pais BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON ON; ; -- Insert statements for procedure here SELECT * FROM dbo dbo. .tblDepartamentos where IdDepartamento =@id END
Ejecución Del Procedimiento: EXEC ,…
Ejemplo: exec dbo dbo. .Departamentos 1
Procedimientos Almacenados, Funciones y Triggers
Elaborada por: Emilson Acosta
FUNCIONES Una función al igual que los stored procedures, su código se guarda en la base de datos y tiene como función realizar un cálculo y devolver un valor. Sintaxis: CREATE FUNCTION ( ,… ) RETURNS AS BEGIN DECLARE RETURN () END
Ejemplo: CREATE FUNCTION dbo.Paises (@paisid Int) RETURNS @pais TABLE (IdPais int, nombrePais nvarchar (255)) AS BEGIN INSERT @pais select * from dbo.tblPaises where IdPais=@paisid RETURN END CREATE FUNCTION IVA (@cantidad money) RETURNS money AS BEGIN DECLARE @resultado money SET @resultado = @cantidad * 0.18 RETURN (@resultado) END
Ejecución de la función: SELECT * FROM ( ,… ) o SELECT ,… , ( ,… ) FROM
Ejemplo: select * from Paises(1) SELECT TOP(10) name, listprice, dbo.iva(listprice) as IVA FROM Production .Product WHERE listprice != 0
Procedimientos Almacenados, Funciones y Triggers
Elaborada por: Emilson Acosta
TRIGGERS Los triggers son subprogramas que se disparan frente a eventos que ocurren en la base de datos. Sintaxis: CREATE TRIGGER ON AFTER INSERT|DELETE|UPDATE BEGIN SET NOCOUNT ON; END;
SET NOCOUNT ON, impide que se generen mensajes de texto con cada instrucción que se ejecuta. Cuando se utilizan triggers se generan las siguientes tablas que son manejadas por el mismo gestor de base de datos: Inserted: sólo está disponible en las operaciones INSERT y UPDATE y en ella están los valores resultantes después de la inserción o actualización. Deleted: sólo está disponible en las operaciones UPDATE y DELETE, en ella están los valores anteriores a la ejecución de la actualización o borrado.
Ejemplo: CREATE TRIGGER historico_habitantes ON tblHabitantes AFTER UPDATE AS BEGIN -- SET NOCOUNT ON impide que se generen mensajes de texto -- con cada instrucción SET NOCOUNT ON; INSERT INTO tbl_historicos_habitantes (IdHabitante, nombreHabitante, IdMunicipio) SELECT IdHabitante, nombreHabitante, IdMunicipio FROM DELETED END
Ejemplo de desencadenador de un trigger: update tblHabitantes set nombreHabitante='Emilson Acosta' where nombreHabitante ='Roberto Bueso'
Procedimientos Almacenados, Funciones y Triggers
Elaborada por: Emilson Acosta