Está en la página 1de 36

Procedimientos de

Almacenado
Roco Contreras guila
Primer Semestre 2010
Que 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.
Que es un PA?
Una vez creado un procedimiento
almacenado, se puede invocar directamente
desde una aplicacin, o sustituir el nombre
de una tabla o vista, por el nombre de
procedimiento en clusulas SELECT.

Los procedimientos almacenados pueden


recibir parmetros de entrada y retornar
valores a la aplicacin.
Ventajas
Diseo modular.
Aplicaciones que acceden la misma
Base de Datos pueden compartir los
procedimientos almacenados,
eliminando el cdigo doble y
reduciendo el tamao de las
aplicaciones.
El fcil mantenimiento.
Ventajas
Cuando un procedimiento se actualiza,
los cambios se reflejan
automticamente en todas las
aplicaciones, sin la necesidad de
recompilar y re linkear. Las
aplicaciones son compiladas slo una
vez para cada cliente.
Ventajas
Los procedimientos almacenados son
ejecutados por el servidor, no por el
cliente lo que reduce el trfico en la red
y mejora el performance o desempeo,
especialmente para el acceso del
cliente remoto.
Ventajas
Estn almacenados en los servidores y
asegurados por las medidas tomadas
en la instalacin, 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
Rendimiento
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 vlidos.

Una vez que los permisos y la sintaxis de los


comandos se han verificado, SQL Server
construye un plan de ejecucin para procesar el
pedido.
Rendimiento
Los procedimientos almacenados son ms
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.
Rendimiento
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
podra contener.
Rendimiento
La primera vez que se ejecuta el
procedimiento, se crea un plan de ejecucin
y se compila al procedimiento almacenado

Los procesamientos subsecuentes del


procedimiento almacenado son mucho ms
rpidos ya que el SQL Server no vuelve a
controlar la sintaxis, ni recrea un plan de
ejecucin, ni se recompila el procedimiento.
Rendimiento
Por ltimo se verifica el cach por si ya
existe un plan de ejecucin para ese
procedimiento antes de generar un nuevo
plan de ejecucin.
Marco de programacin
Una vez que se crea un procedimiento
almacenado, puede ser llamado todas las
veces que sea necesario

Esta capacidad provee modulacin y


habilita la reutilizacin del cdigo.
Marco de programacin
La reutilizacin del cdigo mejora el
mantenimiento de la base de datos al
aislar la base de datos de los cambios en
las prcticas del negocio.

Si las reglas de negocios cambian en una


organizacin, se puede modificar a los
procedimientos almacenados para cumplir
con las nuevas reglas de negocio.
Marco de programacin
Todas las aplicaciones que llaman a esos
procedimientos almacenados cumplirn
con la nuevas reglas, sin tener que ser
directamente modificados.
Seguridad

Otro capacidad importante de los


procedimientos almacenados es que mejoran la
seguridad a travs de la encriptacin 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.
Seguridad
Adems 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.
Categoras de procedimientos
almacenados
Existen cinco categoras :
1. procedimientos almacenados del
sistema,
2. procedimientos almacenados locales,
3. procedimientos almacenados
temporales,
4. procedimientos almacenados extendidos
y
5. procedimientos almacenados remotos.
Procedimientos almacenados del
sistema
Los procedimientos almacenados del sistema
son guardados en la base de datos Master y
son tpicamente 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 administracin
de las bases de datos, y funciones de
administracin de seguridad.
Procedimientos almacenados del
sistema
Por ejemplo, se pueden ver los privilegios de
una tabla usando el procedimiento almacenado
de catlogo 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 Pubs
GO
EXECUTE sp_table_privileges Stores
Procedimientos almacenados
locales
Los procedimientos almacenados locales
son usualmente almacenados en una base
de datos y estn tpicamente diseados para
completar tareas en la base de datos donde
residen.

Un procedimiento almacenado local se


podra crear tambin para personalizar
cdigo de los procedimientos almacenados
del sistema.
Procedimientos 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.
Procedimientos almacenados
temporales
Un procedimiento almacenado temporario
es similar a un procedimiento almacenado
local, pero existe slo hasta que se cierre
la conexin que lo cre o se d de baja el
SQL Server, dependiendo del tipo de
procedimiento almacenado
Procedimientos 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 an despus que la conexin que los
cre se terminan
No son removidos hasta que el SQL
Server no sea apagado.
Procedimientos almacenados
extendidos
Un procedimiento almacenado extendido
usa un programa externo, compilado
como una DLL, para expandir las
capacidades de un procedimiento
almacenado.
Como 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.
Como se guarda un
procedimiento
Si el procedimiento pasa el chequeo de
sintaxis, el procedimiento se guarda,
escribindose 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.
CREATE PROCEDURE
Se puede usar el comando CREATE
PROCEDURE, o su versin abreviada,
CREATE PROC, para crear un
procedimiento almacenado en el Query
Analyzer.
CREATE PROCEDURE
Cuando utiliza CRETE PROC, se pueden
realizar las siguientes tareas:

Especificar agrupamientos de procedimientos


almacenados
Definir parmetros de entrada-salida, sus
tipos de datos, y sus valores por defecto.
CREATE PROCEDURE
Cuando se definen parmetros de entrada y
salida, estos siempre van precedidos por el
signo @, seguido del nombre del parmetro y
luego una designacin del tipo de dato.

Los parmetros de salida deben incluir la


palabra clave OUTPUT para diferenciarlos de
los de entrada.

Usar cdigos de retorno para mostrar


informacin acerca del xito o falla de una tarea.
CREATE PROCEDURE
Controlar si un plan de ejecucin debera 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.
Proveer de contexto a un
procedimiento almacenado
Con la excepcin de los procedimiento
almacenado temporarios, un
procedimiento almacenado se crea
siempre en la base de datos actual.
Proveer 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
Proveer de contexto a un
procedimiento almacenado
Ejemplo:

USE Pubs
GO
CREATE PROCEDURE [dbo].[ListAuthorNames]
AS
SELECT [au_fname], [aufname]
FROM [pubs].[dbo].[authors]
Crear procedimientos
almacenados temporarios
Para crear un procedimiento almacenado
temporal local, se agrega delante del
nombre del procedimiento el smbolo #.

Este signo numeral instruye al SQL Server


para que cree el procedimiento en la
TempDB
Crear 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

También podría gustarte