Vous êtes sur la page 1sur 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

Vous aimerez peut-être aussi