Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
STORED PROCEDURE
U
n procedimiento almacenado es un programa físicamente en una base de datos.
Su implementación varia de un gestor de base de datos a otro. La ventaja de un
procedimiento almacenado es que, al ser ejecutado, en respuesta a una petición
de usuario, es ejecutado directamente en el motor de base de datos el cual usualmente corre
en un servidor separado. Posee acceso directo a los datos que necesita manipular y solo necesita
enviar sus resultados de regreso al usuario deshaciéndose de la sobrecarga resultante de
comunicar grandes cantidades de datos salientes y entrantes.
Ventajas
Procedimientos almacenados
en SQL Server
1
MAYOR SEGURIDAD
Se pueden ejecutar SP con instrucciones que hacen referencia a objetos que los usuarios no
tienen permisos. El procedimiento realiza la ejecución del código y todas las instrucciones y
controla el acceso a los objetos a los que hace referencia. Esto hace más sencillo la asignación
de permisos. Se puede implementar la suplantación de usuarios usando Execute As. Existe un
nivel fuerte de encapsulamiento.
RENDIMIENTO MEJORADO
Los procedimientos almacenados se compilan la primera vez que se ejecutan y crean un plan de
ejecución que vuelve a usarse en posteriores ejecuciones.
Desventajas
Procedimientos almacenados
en SQL Server
Hacen que la base de datos sea más pesada tanto para la memoria como para el
procesador. En vez de estar concentrado en almacenar y devolver datos, uno puede
estarle pidiendo al SGBD que realice varias operaciones lógicas, la cual no es su función.
Sólo contienen SQL declarativo, así que es muy dificultoso escribir procedimientos
complejos para negocios como en otros lenguajes de programación en la capa de
aplicación tales como Java, C#,C++.
2
Algunos SGBD modernos (notablemente Microsoft SQL Server 2000 en adelante) no
ofrecen ninguna ventaja de desempeño usando SP: son compilados y almacenados en
caché de la misma forma dynamic SQL.
Tipos
Procedimientos almacenados
en SQL Server
DEFINIDOS POR EL USUARIO
Se crea por el usuario en las bases de datos definidas por el usuario o en las de sistema (Master,
Tempdb, Model y MSDB)
3
Elementos de los procedimientos almacenados
Los procedimientos almacenados están compuestos por algunos de estos elementos:
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. Como todo
buen programador sabe, los parámetros de entrada sirven para pasarle datos al procedimiento
que necesita para llevar a cabo una acción determinada. Los parámetros de salida devuelven al
programa cliente que ejecutó el procedimiento el resultado del mismo.
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.
Posibles usos que pueden darse a estos objetos de la base de datos
Por ejemplo, si deseamos obtener un reporte complejo que incluya instrucciones
condicionales y cálculos complejos con datos obtenidos de varias tablas, un
procedimiento almacenado es nuestro mejor aliado. También se pueden ejecutar
complejos procesos que a veces tardan horas cuando son ejecutados desde el cliente,
ya que en tales casos la información debe pasar del servidor al cliente y viceversa.
Casi siempre las computadoras servidores son poderosas máquinas con mucha
memoria, discos rápidos y uno o más procesadores también muy rápidos. Por lo tanto,
al ejecutar los procesos mediante procedimientos almacenados estamos aprovechando
toda esa capacidad de cómputo disponible en el hardware del servidor.
4
Esto proporciona un entorno seguro y consistente, y los procedimientos pueden
asegurar que cada operación se loguea apropiadamente. En tal entorno, las aplicaciones
y los usuarios no obtendrían ningún acceso directo a las tablas de la base de datos, sólo
pueden ejecutar algunos procedimientos almacenados.
SINTAXIS
As Instrucciones
Empecemos a trabajar
use StoreProcedureSQL
go
5
Store Procedure
Insertar
6
Store procedure
Resultado…
Store Procedure
Editar
7
Resultado…
Store Procedure
Eliminar
8
Resultado…
EJEMPLO N° 1
Crear un procedimiento para consultar los datos del empleado mediante su DNI
RESULTADO…
EJEMPLO N° 2
Crear un procedimiento donde se busque al empleado por su Apellido Paterno y visualizar
que tipo de empleado es.
EXEC TIPOEMPLEADOAP;
9
RESULTADO…
EJEMPLO N° 3
Crear un procedimiento para visualizar los detalles del cliente por su Apellido_Parterno
quien ha recibido el comprobante según la fecha determinada
RESULTADO…
EJEMPLO N° 4
Crear un procedimiento donde se calcule las ventas que hace cada sucursal
10
RESULTADO…
EJEMPLO N° 5
Crear un procedimiento donde se inserte nuevos productos e indicarles los parámetros
11
RESULTADO…
EJEMPLO N° 6
Crear un procedimiento donde permita conocer cuántos comprobantes ha emitido un
determinado empleado mediante su DNI y en una fecha establecida
RESULTADO…
12
EJEMPLO N° 7
Crear un procedimiento donde se pueda visualizar todas las marcas que puede tener un
determinado producto.
RESULTADO…
EJEMPLO N° 8
Crear un procedimiento donde se puede ingresar el tipo de producto y a partir de ahí dar
una lista de esos productos
13
RESULTADO…
EJEMPLO N° 9
Crear un procedimiento para que cargo tiene un empleado, que se buscara por su
apellido_paterno
RESULTADO…
14
EJEMPLO N° 10
Crear un procedimiento donde se pueda visualizar los detalles de unos comprobantes
mediante fecha que se ha emitido
RESULTADO…
15