Está en la página 1de 34

DML

Transact SQL
Introduccin a los
Procedimientos
almacenados
Introduccin
Las tareas conjuntadas son una
herramienta con gran utilidad en cualquier
aplicacin el uso de los procedimientos
almacenados permite agrupar
instrucciones y operaciones como un
programa con un solo plan de ejecucin
Introduccin a los
procedimientos almacenados.
Un procedimiento almacenado es un
pequeo programa almacenado en la
base de datos que puede ser ejecutado
en cualquier momento. Los
procedimientos almacenados, al igual que
los disparadores, utilizan un lenguaje
propietario ya que el estndar SQL ANSI
92 no especifica nada acerca de ellos.
Introduccin a los
procedimientos almacenados.
Los procedimientos almacenados ofrecen
ventajas importantes:

Rendimiento: al ser ejecutados por el motor de base


de datos ofrecen un rendimiento inmejorable ya que
no es necesario transportar datos a ninguna parte.
Potencia: Permiten ejecutar operaciones complejas
en pocos pasos
Centralizacin: estn en un lugar centralizado y
pueden ser ejecutados por cualquier aplicacin que
tenga acceso a la misma.
Introduccin a los
procedimientos almacenados.
Pero tambin ofrecen una desventaja
importante:

Esclavitud: los procedimientos almacenados


generan una esclavitud hacia el motor de base de
datos. Una base de datos con muchos
procedimientos almacenados es prcticamente
imposible de migrar a otro motor.
Introduccin a los
procedimientos almacenados.
set term !!
create procedure proxcliente
(incremento integer)
returns (proximocliente integer) as
begin
proximocliente = gen_id(nextcust, incremento);
end;
!!
set term ; (SP. Realizado en Interbase)
Introduccin a los
procedimientos almacenados.
create procedure proxcliente
@incremento int,
@proximocliente int output
as
Select @proximocliente = gen_id(nextcust,
incremento)
Return @proximocliente
GO
Introduccin a los
procedimientos almacenados.
Procedimientos de Sistema y extendidos.
Microsoft a desarrollado una serie de
procedimientos almacenados para desarrollar
una serie de tareas administrativas de la base
de datos. Estos procedimientos se
encuentran dentro de la base de datos
Master, pero pueden ser usados en cualquier
base de datos.
Introduccin a los
procedimientos almacenados.
Procedimientos de Sistema y extendidos.
Un ejemplo de ello es el procedimiento
sp_helptext que permite visualizar la definicin
de una vista.
Los procedimientos extendidos son usados
implementados como libreras dinmicas (DLLs)
por lo general su nombre empieza con el prefijo
ex_ por ejemplo xp_cmdshell
Introduccin a los
procedimientos almacenados.
Procedimientos definidos por el usuario
Un usuario puede crear sus propios procedimientos
almacenados, mismos que pueden ser clasificados
como: Locales, Temporales o bien Remotos.
Los procedimientos locales, son aquellos donde el
usuario crea su procedimiento para uso dentro de la
base de datos en la que es creado, por lo cual se dice
que estar siempre disponible.
Introduccin a los
procedimientos almacenados.
Procedimientos definidos por el usuario
Los procedimientos Temporales pueden ser
de dos tipos Locales y Globales, se
diferencian por el acceso de las sesiones, los
locales comienzan con el simbolo #
mientras los globales comienzan con doble
simbolo #, como no son procedimientos
fsicos no pueden ser visualizados en el
navegador de procedimientos
Introduccin a los
procedimientos almacenados.
Procedimientos definidos por el usuario
#proc_def Procedimiento temporal local
##proc_def Procedimiento temporal global

Los procedimientos remotos al igual que los


locales existen para una BD. En particular pero
pueden ser mandados a ejecucin con el
nombrado completo de objetos
<basededatos>.DBO.<nombre>
Introduccin a los
procedimientos almacenados.
Ejecucin - Primera Vez
Cuando se ejecuta por primera vez un
procedimiento almacenado el SQL Server
comienza haciendo un parsing al
procedimiento almacenado, despus compila
el procedimiento y lo ejecuta por primera vez
Introduccin a los
procedimientos almacenados.
Ejecucin Segunda Vez
Despus de ejecutar por primera instancia un
procedimiento almacenado, SQL Server
almacena el plan de ejecucin y lo utiliza en
el momento de ejecucin, por lo cual el
trabajo es ms rpido.
Creacin de procedimientos
almacenados.
Sintaxis
CREATE PROCEDURE <nombre>
[WITH opcin]
AS
Instrucciones SQL
GO
Creacin de procedimientos
almacenados.
Por ejemplo crear un procedimiento que permita
mostrar el territorio (TerritoryDescription) y la
Regin a la que pertenece (RegionDescription)
de las tablas Region y Territories de la Base de
datos Northwind

Este procedimiento contendr dentro de l


nicamente una instruccin SELECT
Creacin de procedimientos
almacenados.
Create procedure sp_terr
as
select t.TerritoryDescription, r.RegionDescription
from Territories t join Region r
on t.RegionID = r.RegionID

Compile el procedimiento (F5)


Ejecute el procedimiento <nombre>
Creacin de procedimientos
almacenados.

Plan de Ejecucin
Creacin de procedimientos
almacenados.
Creacin de procedimientos
almacenados.
Limitaciones:
Soportan hasta 128MB de tamao
Se pueden anidar hasta 32 niveles de PA.
(anidar un procedimiento es cuando uno
llama a otro)
No se pueden realizar las siguientes
operaciones: CREATE DEFAULT, CREATE
PROCEDURE, CREATE RULE, CREATE
TRIGGER, CREATE VIEW
Creacin de procedimientos
almacenados.
Revisin de la definicin
Para revisar desde el analizador de consultas
el contenido del procedimiento almacenado
basta con usar el procedimiento de sistema
SP_HELPTEXT <nombre>

Para la revisin de aspectos generales se


puede usar el procedimiento de sistema
SP_HELP <nombre>
Creacin de procedimientos
almacenados.
Evitando ver la definicin
Para evitar que cualquier usuario pueda accesar a la
definicin del procedimiento almacenado, se agrega
la clusula WITH ENCRYPTION despus de
especificar el nombre.
CREATE PROCEDURE <nombre>
WITH ENCRYPTION
AS
Instrucciones SQL
GO
Creacin de procedimientos
almacenados.
Practica #2
Cree un procedimiento almacenado que muestre de
la tabla Products los campos ProductID,
ProductName y UnitPrice, la definicin del
procedimiento debe permanecer cifrada.
Ejecute el procedimiento
Analice el plan de ejecucin
Revise que la definicin no se visualice
Creacin de procedimientos
almacenados.
Modificacin de Procedimientos
Se puede cambiar la definicin de los
procedimientos almacenados usando la
instruccin ALTER PROCEDURE, cuando se
modifica un procedimiento, realmente lo que
se lleva acabo es un borrado y una re-
creacin.
Creacin de procedimientos
almacenados.
Borrando un procedimiento
Cuando se desea eliminar un procedimiento
almacenado, debe de ejecutar la instruccin
DROP PROCEDURE <nombre>

Microsoft recomienda revisar que objetos son


dependientes del procedimiento antes de
eliminarlo SP_DEPENDS <procedimiento>
Creacin de procedimientos
almacenados.
Practica #3
Modifique el procedimiento del ejercicio
anterior para que adems muestre la cantidad
de registros existentes en la tabla de
Products, esto a travs de una consulta.
Uso de parmetros.

Parmetros de entrada
CREATE PROCEDURE <nombre>
[@nombre_parametro <tipo de dato>]
[=valor_default]
[WITH opcin]
AS
Instrucciones SQL
GO
Ejemplo
Crear un procedimiento que determine si existe o
no el registro en la tabla clientes, al introducir los
valores de entrada nombre y telefono
Uso de parmetros.
Crear un procedimiento almacenado que
reciba de entrada una concordancia de
caracteres y muestre la regin
(RegionDescription) de aquellas regiones
que contengan esa subcadena.
create procedure sp_tab
@name varchar(50) = null
as
select @name='%'+@name+'%'
select * from region where RegionDescription like
@name
Uso de parmetros.
La definicin por default permite que no se
marque error si el procedimiento no recibe el
parmetro indicado.
Para verificar si existe valor en el parmetro
basta revisar con un IF
if @name is null
print 'No existe subcadena de comparacin'
else
Begin
select @name='%'+@name+'%'
select * from region where RegionDescription like @name
End
Uso de parmetros.
Parmetros de Salida
CREATE PROCEDURE <nombre>
[@nombre_parametro <tipo de dato>] [=valor_default]
output
[WITH opcin]
AS
Instrucciones SQL
GO
Ejecucin anidada de procedimientos
EXEC <procedimiento>
Uso de parmetros.
Otras capacidades
Uso de variables (declare @<variable>
tipo_dato)
Uso de ciclos (While <expresin_lgica> ...
begin ... end)
Mensajes de error (RAISERROR)
Variable de sistema (@@ERROR)
Conclusin
Uno de los objetos ms complejos de la
base de datos son los procedimientos
almacenados, su desarrollo y
comprensin requieren de tiempo y
facilidad de programacin en la mayora
de los casos, esta unidad permiti al
usuario comprender su manejo y
utilizacin bsica de los mismos.

También podría gustarte