Está en la página 1de 33

ESCUELA POLITECNICA NACIONAL

DEPARTAMENTO DE ELECTRONICA, TELECOMUNICACIONES Y REDES DE


INFORMACION

BASES DE DATOS - IEE4B4


MSC GABRIEL LOPEZ
gabriel.lopez@epn.edu.ec

Microsoft SQL Server

Microsoft SQL Server


SQL Procedimientos Almacenados
Un procedimiento almacenado de SQL Server es un grupo de una o varias
instrucciones Transact-SQL.
- Se asemeja a una funcin.
Estas pueden:
Aceptar parmetros de entrada y devolver varios valores en forma de
parmetros de salida al programa que realiza la llamada.
Pueden contener llamadas a otros procedimientos.
Devolver un valor de estado: se ha realizado correctamente o se han
producido errores, y el motivo de estos.

Microsoft SQL Server


SQL Procedimientos Almacenados (Ventajas)
Trfico de red reducido entre el cliente y el servidor.
Mayor seguridad
pueden realizar operaciones en los objetos de base de datos subyacentes a travs
de un procedimiento, aunque los usuarios y los programas no tengan permisos
directos
EXECUTE AS
A travs de la red, solo est visible la llamada que va a ejecutar el procedimiento
Contra ataques por inyeccin de cdigo SQL.
Los procedimientos pueden cifrarse, lo que ayuda a ofuscar el cdigo fuente.

Reutilizacin del cdigo

Microsoft SQL Server


SQL Procedimientos Almacenados (Ventajas)
Reutilizacin del cdigo
El cdigo de cualquier operacin de base de datos redundante resulta un
candidato perfecto para la encapsulacin de procedimientos.

Mantenimiento ms sencillo
Cuando las aplicaciones cliente llaman a procedimientos y mantienen las
operaciones de base de datos en la capa de datos

Rendimiento mejorado
De forma predeterminada, un procedimiento se compila la primera vez que se
ejecuta y crea un plan de ejecucin que vuelve a usarse en posteriores
ejecuciones

Microsoft SQL Server


Tipos de Procedimientos Almacenados
Definidos por el usuario
Temporales

Sistema: Estn almacenados fsicamente en la base de datos interna y


oculta Resource y se muestran de forma lgica en el esquema sys
Extendidos definidos por el usuario: Los procedimientos extendidos permiten
crear rutinas externas en un lenguaje de programacin como C.

Microsoft SQL Server


Ejemplo
use escuela;
go
create procedure InsertarAlumno
AS
BEGIN
insert into alumno
(codigo,nombre,apellido,edad)
values (99, 'Andy', 'Paz', 10)
END

Microsoft SQL Server


Ejemplo

InsertarAlumno

Microsoft SQL Server


Ejemplo II
use escuela;
go
create procedure BuscarPorCodigo
@codigo varchar(50)
AS
BEGIN
select * from alumno
where codigo = @codigo
END

Microsoft SQL Server


Practiquemos

Realice un Procedimiento Almacenado que reciba parmetros de insercin,


para la tabla alumnos.

Microsoft SQL Server


Ejemplo:
Modificacin de Procedimiento Almacenado
use escuela;
go
alter proc BuscarPorCodigo
AS
BEGIN
select * from alumno
where codigo = '99'
END

Microsoft SQL Server


Ejemplo:
Entradas y Salidas
use escuela;
go
create proc Edad
@edad int,
@count int output
AS
BEGIN
SET @count = (select count(*) from alumno
where edad>@edad)
END

Ejemplo:
create procedure test1

@edad int,
@out varchar(50) output
as
begin
declare @val int

select * from alumno


where edad>@edad
set @val= @@rowcount
if @val >0
begin

set @out = 'Existen Campos'


end
else

begin
set @out = 'No Existen Campos'
end
end

Microsoft SQL Server


Ejemplo:
Entradas y Salidas e IF
use escuela
go
declare @out varchar(50)
execute test1 100,@out output
print @out

Ejemplo:
create procedure test1

@edad int
as
begin
declare @val int
declare @out2 varchar(50)

select * from alumno


where edad>@edad
set @val= @@rowcount
if @val >0
begin

set @out2 = 'Existen Campos'


end
else

begin
set @out2 = 'No Existen Campos'
end
print @out2
end

Microsoft SQL Server


Ejemplo:
Entradas y Salidas e IF
use escuela
go
execute test1 30

Ejemplo:
create procedure test1
@edad int
as
begin
declare @val int
declare @out2 varchar(50)
select * from alumno

where edad>@edad
set @val= @@rowcount
if @val >0
begin
set @out2 = 'Existen Campos'

return 1
end
else

begin
set @out2 = 'No Existen Campos'
return 0
end
end

Microsoft SQL Server


Triggers:
Un disparador es una clase especial de procedimiento almacenado que
se ejecuta automticamente cuando se produce un evento en el servidor
de bases de datos.
Los disparadores pueden ser:
DML
DDL
logon

Microsoft SQL Server


Triggers DML:
Los disparadores DML se ejecutan cuando un usuario intenta modificar
datos mediante un evento de lenguaje de manipulacin de datos (DML).

Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una


tabla o vista.
Estos desencadenadores se activan cuando se desencadena cualquier
evento vlido, con independencia de que las filas de la tabla se vean o no
afectadas.

Microsoft SQL Server


Triggers DDL:
Los disparadores DDL se ejecutan como respuesta a diversos eventos del
lenguaje de definicin de datos (DDL).

Estos eventos corresponden principalmente a instrucciones CREATE,


ALTER y DROP de Transact-SQL, y a determinados procedimientos
almacenados del sistema que ejecutan operaciones de tipo DDL

Microsoft SQL Server


Triggers LOGON:
Los desencadenadores logon se activan en respuesta al evento LOGON
que se genera cuando se establece la sesin de un usuario.

Con qu usuario se conecta a la base de datos?

Microsoft SQL Server


Triggers (DML) SINTAXIS:

Microsoft SQL Server


Triggers (DDL) SINTAXIS:

Microsoft SQL Server


Triggers (LOGON) SINTAXIS:

Microsoft SQL Server


Triggers Notas:

Que es AFTER?
Diga un Ejemplo
Que es INSTEAD OF?
Diga un Ejemplo
Segn la sintaxis cul se puede usar en DML, DDL, y LOGON.

Microsoft SQL Server


Triggers Notas:
INSTEAD OF no se puede especificar para los desencadenadores DDL o
logon.

Como mximo, se puede definir un desencadenador INSTEAD OF por


cada instruccin INSERT, UPDATE o DELETE en cada tabla o vista.
Los desencadenadores INSTEAD OF no se permiten en vistas actualizables
que usan WITH CHECK OPTION.

Microsoft SQL Server


Triggers Ejemplo:
Como puedo saber si una tabla tiene triggers?
use northwind
go
Sp_helptrigger Customers

Microsoft SQL Server


Triggers Ejemplo:
Ayuda a obtener informacin de tablas temporales
Alter Trigger Tr_Cliente_Eliminado
On Customers
After delete
As
Insert into [CustomersDeleted]
Select * from Deleted

Microsoft SQL Server


Triggers Ejemplo II:
Desactivar la creacion de Tablas en una base de datos
use northwind
go
create trigger TrgNoNewTables
on database
for CREATE_TABLE
as
BEGIN
PRINT 'No es permitida la creacion de nuevas tablas
ROLLBACK
END

Microsoft SQL Server


Triggers Ejemplo II:
Desactivar la creacion de Tablas en una base de datos: TEST
USE northwind
go
CREATE TABLE tblTest (id int)

Microsoft SQL Server


Practiquemos Triggers:
Desactivar Y Activar Triggers?

USE northwind
go
ENABLE TRIGGER tgrNoNewTables on DATABASE
USE northwind
go

DISABLE TRIGGER trgNoNewTables on DATABASE

Microsoft SQL Server


Practiquemos Triggers:
Desactivar todos los Triggers de una Base de Datos
USE northwind
go
DISABLE TRIGGER ALL on DATABASE

Microsoft SQL Server


Triggers:
Aplicar Triggers de el servidor de Base de Datos

create trigger TrgNoNewTables


on ALL SERVER
for CREATE_TABLE
as
BEGIN
PRINT 'No es permitida la creacion de nuevas tablas
ROLLBACK
END

También podría gustarte