Está en la página 1de 16

PROCEDIMIENTOS DE

ALMACENADO
RAMIRO ALV
FABIAN HE
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.

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.
VENTAJAS
- Comparten la lógica de la aplicación con las otras aplicaciones, con lo cual el acceso y las
modificaciones de los datos se hacen en un solo sitio.

- Permiten realizar todas las operaciones que los usuarios necesitan evitando que tengan acceso
directo a las tablas.

- Reducen el tráfico de red; en vez de enviar muchas instrucciones, los usuarios realizan
operaciones enviando una única instrucción, lo cual disminuye el número de solicitudes entre el
cliente y el servidor.
TIPOS DE PROCEDIMIENTOS ALMACENADOS
Existen cinco categorías :
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 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.
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 Pubs
GO
EXECUTE sp_table_privileges Stores
PROCEDIMIENTOS 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.

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 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

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.
PROCEDIMIENTOS ALMACENADOS
EXTENDIDOS
Un procedimiento almacenado extendido usa un programa externo, compilado
como una DLL, para expandir las capacidades de un procedimiento
almacenado.
SEGURIDAD
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.
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.
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.

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.
Procedimientos almacenados (crear - ejecutar

Los procedimientos almacenados se crean en la base de datos seleccionada, excepto los procedimientos
almacenados temporales, que se crean en la base de datos "tempdb".

Los procedimientos almacenados pueden hacer referencia a tablas, vistas, a funciones definidas por el usuario, a
otros procedimientos almacenados y a tablas temporales.

Para crear un procedimiento almacenado empleamos la instrucción "create procedure".

La sintaxis básica parcial es:

create procedure NOMBREPROCEDIMIENTO

as INSTRUCCIONES;
Procedimientos almacenados (eliminar)

Los procedimientos almacenados se eliminan con "drop procedure". Sintaxis:

drop procedure NOMBREPROCEDIMIENTO;

Si el procedimiento que queremos eliminar no existe, aparece un mensaje de error, para


evitarlo, podemos emplear esta sintaxis:

if object_id('NOMBREPROCEDIMIENTO') is not null

drop procedure NOMBREPROCEDIMIENTO;

.
Procedimientos almacenados (parámetros de entrada Y salidad)

Cuando se definen parámetros de entrada y salida, estos siempre van precedidos por el
signo @, 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.

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 .

.
Procedimientos almacenados (encriptado)

Si no se quiere que los usuarios puedan leer el contenido del procedimiento


podemos indicarle a SQL Server que codifique la entrada a la tabla "syscomments"
que contiene el texto. Para ello, debemos colocar la opción "with encryption" al
crear el procedimiento:

create procedure NOMBREPROCEDIMIENTO

PARAMETROS

with encryption

as INSTRUCCIONES;

.
Procedimientos almacenados (modificar)

Los procedimientos almacenados pueden modificarse, por necesidad de los usuarios o


por cambios en la estructura de las tablas que referencia.

Un procedimiento almacenado existente puede modificarse con "alter procedure".


Sintaxis:

alter procedure NOMBREPROCEDIMIENTO

@PARAMETRO TIPO = VALORPREDETERMINADO

as SENTENCIAS;
PROVEER 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.

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
Ejemplo:

USE Pubs
GO
CREATE PROCEDURE [dbo].[ListAuthorNames]
AS
SELECT [au_fname], [aufname]
FROM [pubs].[dbo].[authors]

También podría gustarte