Title: Procedimientos de Almacenado
1Procedimientos de Almacenado
- Rocío Contreras Águila
- Primer Semestre 2010
2Que es un PA?
- Un Procedimiento Almacenado es un programa
autocontrolado escrito en lenguaje del DBMS, son
almacenados como parte de la Base de Datos y sus
metadatos.
3Que es un PA?
- Una vez creado un procedimiento almacenado, se
puede invocar directamente desde una aplicación,
o sustituir el nombre de una tabla o vista, por
el nombre de procedimiento en cláusulas SELECT. - Los procedimientos almacenados pueden recibir
parámetros de entrada y retornar valores a la
aplicación.
4Ventajas
- Diseño modular.
- Aplicaciones que acceden la misma Base de Datos
pueden compartir los procedimientos almacenados,
eliminando el código doble y reduciendo el tamaño
de las aplicaciones. - El fácil mantenimiento.
5Ventajas
- Cuando un procedimiento se actualiza, los cambios
se reflejan automáticamente en todas las
aplicaciones, sin la necesidad de recompilar y re
linkear. Las aplicaciones son compiladas sólo una
vez para cada cliente.
6Ventajas
- Los procedimientos almacenados son ejecutados por
el servidor, no por el cliente lo que reduce el
tráfico en la red y mejora el performance o
desempeño, especialmente para el acceso del
cliente remoto.
7Ventajas
- Están almacenados en los servidores y asegurados
por las medidas tomadas en la instalación, lo que
impide que los usuarios normales puedan
modificarlos e incluso desconocen su existencia.
Este es un elemento de gran valor en lo que a
seguridad respecta
8Rendimiento
- Cada vez que un comando Transact-SQL, o conjunto
de comandos, es enviado el servidor para su
procesamiento, el servidor debe determinar si el
remitente tiene suficientes privilegios para
ejecutar esos comandos y si los comandos son
válidos. - Una vez que los permisos y la sintaxis de los
comandos se han verificado, SQL Server construye
un plan de ejecución para procesar el pedido.
9Rendimiento
- Los procedimientos almacenados son más eficientes
en parte porque el procedimiento es almacenado en
el SQL Server cuando se crea - La sintaxis de los comandos contenidos en un
procedimiento almacenado se comprueba que este
libre de errores antes de ser guardado.
10Rendimiento
- El nombre del procedimiento almacenado se
almacena en la tabla SysObjects, mientras que el
texto del procedimiento se guarda en la tabla
SysComments. - Invocar al procedimiento almacenado implica
ejecutar un solo comando en vez de cientos de
comandos que un procedimiento almacenado podría
contener.
11Rendimiento
- La primera vez que se ejecuta el procedimiento,
se crea un plan de ejecución y se compila al
procedimiento almacenado - Los procesamientos subsecuentes del procedimiento
almacenado son mucho más rápidos ya que el SQL
Server no vuelve a controlar la sintaxis, ni
recrea un plan de ejecución, ni se recompila el
procedimiento.
12Rendimiento
- Por último se verifica el caché por si ya existe
un plan de ejecución para ese procedimiento antes
de generar un nuevo plan de ejecución.
13Marco de programación
- Una vez que se crea un procedimiento almacenado,
puede ser llamado todas las veces que sea
necesario - Esta capacidad provee modulación y habilita la
reutilización del código.
14Marco de programación
- La reutilización del código mejora el
mantenimiento de la base de datos al aislar la
base de datos de los cambios en las prácticas del
negocio. - Si las reglas de negocios cambian en una
organización, se puede modificar a los
procedimientos almacenados para cumplir con las
nuevas reglas de negocio.
15Marco de programación
- Todas las aplicaciones que llaman a esos
procedimientos almacenados cumplirán con la
nuevas reglas, sin tener que ser directamente
modificados.
16Seguridad
- Otro capacidad importante de los procedimientos
almacenados es que mejoran la seguridad a través
de la encriptación y el aislamiento. - Los usuarios de las bases de datos pueden tener
permisos de ejecutar un procedimiento almacenado
sin tenerlos para acceder directamente a los
objetos de la bases de datos sobre las que opera
el procedimiento almacenado.
17Seguridad
- Además un procedimiento almacenado puede ser
encriptado cuando se lo crea o modifica
inhabilitando a los usuarios a leer los comandos
Transact-SQL contenidos en el procedimiento
almacenado. - Esta capacidad de seguridad permite aislar la
estructura de la base de datos del usuario de la
base de datos, con la consiguiente ganancia en
seguridad.
18Categorías de procedimientos almacenados
- Existen cinco categorías
- procedimientos almacenados del sistema,
- procedimientos almacenados locales,
- procedimientos almacenados temporales,
- procedimientos almacenados extendidos y
- procedimientos almacenados remotos.
19Procedimientos almacenados del sistema
- Los procedimientos almacenados del sistema son
guardados en la base de datos Master y son
típicamente identificados por el prefijo sp_ - Ellos realizan una amplia variedad de tareas para
soportar las funciones del SQL Server soportando
llamadas de aplicaciones externas para datos de
las tablas del sistema, procedimientos generales
para administración de las bases de datos, y
funciones de administración de seguridad.
20Procedimientos almacenados del sistema
- Por ejemplo, se pueden ver los privilegios de una
tabla usando el procedimiento almacenado de
catálogo sp_table_privileges. - El comando siguiente utiliza este procedimiento
almacenado para mostrar los privilegios de la
tabla stores en la base de datos Pubs - USE PubsGOEXECUTE sp_table_privileges Stores
21Procedimientos almacenados locales
- Los procedimientos almacenados locales son
usualmente almacenados en una base de datos y
están típicamente diseñados para completar tareas
en la base de datos donde residen. - Un procedimiento almacenado local se podría crear
también para personalizar código de los
procedimientos almacenados del sistema.
22Procedimientos almacenados locales
- Para crear una tarea personalizada basada sobre
un procedimiento almacenado del sistema, primero
copie el contenido del procedimiento almacenado
del sistema y guarde el nuevo procedimiento
almacenado y guarde el nuevo procedimiento
almacenado como un procedimiento almacenado
local.
23Procedimientos almacenados temporales
- Un procedimiento almacenado temporario es similar
a un procedimiento almacenado local, pero existe
sólo hasta que se cierre la conexión que lo creó
o se dé de baja el SQL Server, dependiendo del
tipo de procedimiento almacenado
24Procedimientos almacenados temporales
- Los procedimientos almacenados temporarios
creados directamente en la TempDB son diferentes
a los procedimientos almacenados locales y
globales en lo siguiente - Se pueden configurar permisos para ellos.
- Existen aún después que la conexión que los creó
se terminan - No son removidos hasta que el SQL Server no sea
apagado.
25Procedimientos almacenados extendidos
- Un procedimiento almacenado extendido usa un
programa externo, compilado como una DLL, para
expandir las capacidades de un procedimiento
almacenado.
26Como se guarda un procedimiento
- Cuando se crea un procedimiento, SQL Server
chequea la sintaxis de los comandos Transact-SQL
que incluye. Si la sintaxis es incorrecta, SQL
Server generará un mensaje de error sintax
incorrect (sintaxis incorrecta), y el
procedimiento no será creado.
27Como se guarda un procedimiento
- Si el procedimiento pasa el chequeo de sintaxis,
el procedimiento se guarda, escribiéndose su
nombre y otras informaciones en la tabla
SysObject. - El texto usado para crear el procedimiento se
escribe en la tabla SysComments de la base de
datos actual.
28CREATE PROCEDURE
- Se puede usar el comando CREATE PROCEDURE, o su
versión abreviada, CREATE PROC, para crear un
procedimiento almacenado en el Query Analyzer.
29CREATE PROCEDURE
- Cuando utiliza CRETE PROC, se pueden realizar las
siguientes tareas - Especificar agrupamientos de procedimientos
almacenados - Definir parámetros de entrada-salida, sus tipos
de datos, y sus valores por defecto.
30CREATE PROCEDURE
- Cuando se definen parámetros de entrada y salida,
estos siempre van precedidos por el signo _at_,
seguido del nombre del parámetro y luego una
designación del tipo de dato. - Los parámetros de salida deben incluir la palabra
clave OUTPUT para diferenciarlos de los de
entrada. - Usar códigos de retorno para mostrar información
acerca del éxito o falla de una tarea.
31CREATE PROCEDURE
- Controlar si un plan de ejecución debería ser
guardado temporalmente para un procedimiento. - Encriptar el contenido del procedimiento
almacenado por razones de seguridad. - Especificar las acciones que deberá tomar el
procedimiento almacenado cuando se ejecute.
32Proveer de contexto a un procedimiento almacenado
- Con la excepción de los procedimiento almacenado
temporarios, un procedimiento almacenado se crea
siempre en la base de datos actual.
33Proveer de contexto a un procedimiento almacenado
- Siempre se debe especificar la base de datos
actual usando el comando USE nombre_base seguido
por el por el comando GO antes de crear un
procedimiento almacenado
34Proveer de contexto a un procedimiento almacenado
- Ejemplo
- USE Pubs
- GO
- CREATE PROCEDURE dbo.ListAuthorNames
- AS
- SELECT au_fname, aufname
- FROM pubs.dbo.authors
35Crear procedimientos almacenados temporarios
- Para crear un procedimiento almacenado temporal
local, se agrega delante del nombre del
procedimiento el símbolo . - Este signo numeral instruye al SQL Server para
que cree el procedimiento en la TempDB
36Crear procedimientos almacenados temporarios
- SQL Server ignora la base de datos actual cuando
crea un procedimiento temporal. - Crear un procedimiento temporal local
- CREATE PROCEDURE localtemp
- AS
- SELECT from pubs.dbo.authors
- GO