Procedimientos almacenados en SQL-
Server
Lic. David I. López Pérez
1
Procedimiento Almacenados
Conjunto de comandos que pueden ser ejecutados directamente en
el servidor, es decir, será ejecutado por el servidor de Base de Datos y
no por el programa cliente que lo accede, permitiendo la ejecución de
una acción o conjunto de acciones especificas.
2
Características
Se almacenan en la propia Base de Datos y constituyen un objeto más dentro de
esta.
Tienden a mejorar el rendimiento de los sistemas producto a que reducen en
intercambio entre cliente y servidor.
Los procedimientos almacenados son reutilizables, de manera que los usuarios
mediante la aplicación cliente no necesitan relanzar los comandos individuales, sino
que pueden llamar el procedimiento para ejecutarlo en el servidor tantas veces como
sea necesario.
3
Utilidades
Los procedimientos almacenados son
muy útiles sobre todo en arquitecturas
cliente/servidor donde hay un servidor
muy potente el cual se puede
aprovechar para ejecutar procesos,
consultas y actualizaciones complejas
en la base de datos.
4
Elementos de los procedimientos
almacenados
Parámetros de entrada (pueden esperar parámetros)
Parámetros de salida (pueden devolver resultados)
Declaración de variables (puede usarse variables en su cuerpo)
Cuerpo del procedimiento (en su cuerpo se indican las acciones a realizar)
Tanto los parámetros de entrada como los de salida son opcionales.
Podemos tener un procedimiento que no tenga parámetros de entrada,
pero sí de salida y viceversa.
5
Tipos de procedimientos almacenados
Procedimientos almacenados definidos por el usuario
Procedimientos almacenados temporales
Procedimientos almacenados del sistema de SQL
Procedimientos almacenados extendidos definidos por el usuario
6
Procedimientos almacenados por el usuario
Los procedimientos almacenados definidos por el usuario se
establecen en las bases de datos definidas por el usuario o en las
bases de datos del sistema (Master, Model, MSDB…), a excepción
de en la base de datos Resource.
Los procedimientos almacenados definidos por el usuario se crean
en Transact-SQL o como una referencia a un método CLR de .NET.
7
Procedimientos almacenados Temporales
Los procedimientos almacenados temporales son un tipo de procedimientos
definidos por el usuario, pero que se almacenan en la base de datos TempDB.
Hay dos tipos de procedimientos almacenados temporales:
Globales, su primer caracter es
Locales, su primer caracter es “#”.
“##”.
Ambos tipos se diferencian entre sí por tres aspectos:
Los nombres La visibilidad La disponibilidad
8
Procedimientos almacenados del sistema
SQL
Los procedimientos almacenados del sistema de SQL
pertenecen a SQL Server y sus primeros caracteres son
“sp_”.
Estos procedimientos se encuentran almacenados de
manera física en la base de datos interna y de manera
oculta en Resource, y se muestran de forma lógica en el
sys.schemas (esquema sys). Por otro lado, la base de
datos MSDB también tiene procedimientos almacenados,
pero en el esquema dbo.
9
Procedimientos almacenados extendidos
definidos por el usuario
Los procedimientos almacenados extendidos
definidos por el usuario son DLL que una
instancia de SQL Server es capaz ejecutar de
forma dinámica. Se consideran “extendidos”
debido a que el usuario puede crear rutinas
externas por su propia cuenta en un lenguaje de
programación.
10
Sintaxis del procedimiento almacenado
Crear Procedimiento almacenado
CREATE PROCEDURE <nombre_procedure> [@param1
<tipo>, ...]
AS
-- Sentencias del procedure
Modificar Procedimiento almacenado
ALTER PROCEDURE <nombre_procedure> [@param1
<tipo>, ...]
AS
-- Sentencias del procedure
Borra Procedimiento almacenado
DROP PROCEDURE <nombre_procedure>
11
Ejemplo de procedimiento almacenado
Procedimiento almacenado para insertar un registro a la tabla
CREATE PROCEDURE spAddCliente
clientes
@nombre varchar(100),
@apellidos varchar(100),
@f_Nac datetime,
@email varchar(50)
AS
INSERT INTO CLIENTES (nombre, apellidos, f_nacimiento,
email)
VALUES (@nombre, @apellidos, @f_nac, @email)
12
Ejemplo con una tabla en la BD
• CREATE TABLE CLIENTE(
• ID VARCHAR (50) not null,
Realic • NOMBRE VARCHAR(100),
e la • APELLIDO VARCHAR(100),
• TELEFONO INT,
siguie
• CELULAR INT
nte • CONSTRAINT PK_ID PRIMARY KEY (ID))
tabla
en
SQL
13
Procedimiento Almacenado Insertar Datos
CREATE PROC spINSERTAR_CLI
@ID VARCHAR(50),
@NOMBRE VARCHAR(100),
@APELLIDO VARCHAR(100),
@TELEFONO INT,
@CELULAR INT
AS
IF NOT EXISTS (SELECT * FROM DBO.CLIENTE WHERE Id =
@Id)
BEGIN
INSERT INTO
CLIENTE(ID,NOMBRE,APELLIDO,TELEFONO,CELULAR)
VALUES
(@ID,@NOMBRE,@APELLIDO,@TELEFONO,@CELULAR)
END
14
Procedimiento Almacenado Actualizar
Datos
CREATE PROC spACTUALIZAR_CLI
@ID VARCHAR(50),
@NOMBRE VARCHAR(100),
@APELLIDO VARCHAR(100),
@TELEFONO INT,
@CELULAR INT
AS
BEGIN
UPDATE CLIENTE SET
NOMBRE = @NOMBRE,
APELLIDO = @APELLIDO,
TELEFONO = @TELEFONO,
CELULAR=@CELULAR
WHERE Id = @Id
END 15
Procedimiento Almacenado Eliminar Datos
CREATE PROCEDURE spELIMINAR_CLI
@Id VARCHAR
AS
IF EXISTS (SELECT * FROM CLIENTE WHERE Id = @Id)
BEGIN
DELETE FROM CLIENTE WHERE Id = @Id
END
16
Ejecución de los procedimientos
almacenados
utilizar instrucción exec
EXEC spINSERTAR_CLI
@Id = 1,
VISUALIZAR LOS DATOS INGRESADOS
@NOMBRE = 'WILLIAM', CON
SELECT * FROM CLIENTE
O PUEDES CREAR TAMBIEN UN
@APELLIDO = 'PEREZ', PROCEDIMIENTO
ALMACENADO SIMILAR AL SIGUIENTE
@TELEFONO = 22347100,
@CELULAR=83347100
17
Visualización del procedimiento
almacenado
18