You are on page 1of 14

El presente consiste en indagar sobre procedimientos almacenados desde su generalidad

hasta ejemplos especficos, partiendo de una base terica conceptual para afianzar los
conocimientos previos que tengan los participantes

La investigacin se realizara en dos partes:


1) La primera parte tratara sobre la concepcin, creacin, implementacin
y seguridad de procedimientos almacenados.
2) Uso prctico de los procedimientos almacenados para insertar, modificar y eliminar
registros.

Con la presente investigacin se espera conocer y afianzar el uso de procedimientos


almacenados en nuestros sistemas que contengan base de datos para hacer transacciones
ms limpias en cdigo , rapidez y seguridad al ejecutarla.

Para ello el equipo encargado del desarrollo del presente laboratorio est conformado por 7
personas cuyos roles se han definidos para mejor desarrollo del laboratorio.

Angulo Mndez Angelo Rafael Salvador

Levano Castilla Carlos Miguel

Quispe Arcos Hans

Donayre Chacaltana Robert

Pardo Figueroa Herencia Jhonatan Carlos Daniel

Pillpe Leon William

Ramrez Gamboa Marlon

En el proceso de desarrollo de investigacin y ejecucin del laboratorio se usara como


recursos el gestor de base de datos SQL Server 2008, el tiempo recomendado para el
desarrollo del laboratorio es de 10 minutos por laboratorio y el tiempo que ud requiera para
asimilar bien la teora. Dicho punto es fundamental para poder proseguir con los ejercicios,
lea atentamente cada indicacin y teora, no intente avanzar a otro punto sin antes haber
asimilado el punto anterior.

Con respecto a los recursos financieros y el gasto que implica desarrollar el laboratorio solo
ser de que Ud. cuente con la licencia necesaria para ejecutar el SQL Sever

Conocimientos previos requeridos:

Manejo de Transact SQL para la implementacin de consultas estructuradas

Manejo y conocimientos del gestor de base de datos SQL Server

Palabras clave: Ejemplo: Bases de Datos. SQL Server 2008.

3. MARCO CONCEPTUAL

Que son procedimientos almacenados?

Un procedimiento es un subprograma que ejecuta una accin especfica y que no devuelve


ningn valor. Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y
un bloque de cdigo.

La sintaxis de un procedimiento almacenado es la siguiente:


El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el
procedimiento existe, se producir, un error.
La sintaxis es muy parecida a la de un bloque annimo, salvo porque se reemplaza la
seccion DECLARE por la secuencia PROCEDURE ... IS en la especificacin del
procedimiento.
Debemos especificar el tipo de datos de cada parmetro. Al especificar el tipo de dato del
parmetro no debemos especificar la longitud del tipo.
Los parmetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT).
El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

CREATE OR REPLACE

PROCEDURE Actualiza_Saldo(cuenta NUMBER, new_saldo NUMBER)


IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo, FX_ACTUALIZACION = SYSDATE
WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;
Tambin podemos asignar un valor por defecto a los parmetros, utilizando la clausula
DEFAULT
o el operador de asigancin (:=) .

Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. Si el


sistema nos indica que el procedimiento se ha creado con errores de compilacin podemos
ver estos errores de compilacin con la orden SHOW ERRORS en SQL *Plus.
Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de
ejecutarlo (en realidad es vlido para cualquier subprograma). Estas son:
Notacin posicional: Se pasan los valores de los parmetros en el mismo orden en que el
procedure los define.

Propsito y ventajas de los procedimientos almacenados

Los procedimientos almacenados proporcionan ventajas de performance, un marco de


trabajo, y mayores capacidades de seguridad. La mejora en el rendimiento se logra a travs
de un almacenamiento local (en la base de datos), cdigo precompilado, y
manejo de cachs (almacenamientos temporarios). El marco de programacin se logra
a travs de construcciones comunes de programacin tales como parmetros de
entrada/salida y reutilizacin de los procedimientos. Las capacidades de seguridad
incluye encriptacin y limitaciones de privilegios que permiten mantener a los usuarios

fuera de la vista de la estructura de la base de datos subyacente, mientras se los habilita a


ejecutar procedimientos almacenados que actan sobre la base de datos.

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.

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. La
reutilizacin del cdigo mejora el mantenimiento de la base de datos a l 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. Todas las aplicaciones que llaman a esos
procedimientos almacenados cumplirn con la nuevas reglas, sin tener que ser directamente
modificados.

3.3) Categoras de procedimientos almacenados

En la actualidad existes cinco categoras de procedimientos almacenados, entre los que


podemos mencionar:

Procedimientos almacenados del sistema

Procedimientos almacenados locales

Procedimientos almacenados temporarios

Procedimientos almacenados extendidos

Procedimientos almacenados remotos.

Un procedimiento es un programa

el cual es almacenado fsicamente en una

base de datos. Su implementacin vara de un gestor de bases de datos a otro.


La ventaja de un procedimiento almacenado es que al ser ejecutado, en
respuesta a una peticin de usuario, es ejecutado directamente en el motor de
bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee
acceso directo a los datos que necesita manipular y slo necesita enviar sus
resultados de regreso al usuario, deshacindose de la sobrecarga resultante de
comunicar grandes cantidades de datos salientes y entrantes

Trabajaremos con las tablas Clientes y Empleado

En este ejemplo usaremos la base de datos: Eurekabank

Procedemos a crear un nuevo procedimiento : Usando la tabla cliente

Al finalizar el cdigo usamos: exec ejemplo01 el cual indicara que el procedimiento a sido
realizado correctamente

Ahora crearemos y ejecutaremos un nuevo Procedimiento usando parmetros:


Usando tabla Empleado

Modificando un procedimiento almacenado ya existente


En la siguiente imagen se muestra un procedimiento almacenado sin parmetros.

Para modificar un procedimiento almacenado despus haber sido creado se usa la


sentencia:
ALTER PROCEDURE [nombre del
procedimiento] BEGIN
[Consulta SQL]
END

Ahora mostramos un procedimiento almacenado con parmetros lo cual vamos a


ensearles a modificar a continuacin.
Este es el procedimiento denominado datos_clientes y pasamos como parmetros
@identificador
Para mostrar el cliente segn su cdigo lo cual vamos a modificar para que nos
muestre todos los cliente segn el cdigo de ciudad

La sentencia que usamos anteriormente la volvemos a usar: ALTER PROCEDURE


[nombre del procedimiento] [@parametros]
BEGIN
[Consulta SQL] END

Creando un procedimiento almacenado para insertar registros


Vamos a crear un procedimiento almacenado para insertar empleados.
Creacin del procedimiento almacenado.

Ahora cuando queramos insertar registros en la tabla empleados simplemente


ejecutamos el procedimiento con los parmetros a registrar.

Ahora verificamos el registro insertado

Creando un procedimiento almacenado para eliminar Registro


Los procedimientos almacenados tambin pueden ser usados para eliminar datos desde la BD,
antes veremos la cantidad de registro que existe en la tabla empleado como por ejemplo:
Dando un visto a Todos Los registros antes de poder eliminar lo que queremos.

Podremos crear Procedimientos Almacenados de 2 maneras:


1. PODEMOS CREAR UN PROCEDIMIENTO ALMACENADO PARA
PODER USARLO CUANTOS VECES QUERAMOS.

Ejecutamos el Procedimiento Almacenado

Damos un vistazo para saber si el registro se Elimino de la Tabla

2.

Podramos haberlo creado de la siguiente manera. Esto es mas que nada para saber si
se ingresa o No un valor.

Ejecutamos el Procedimiento

Nos queda de esta manera:

Ahora si no por x motivos no ingresamos un valor pues nos mostrara un mensaje as:

Creando un procedimiento almacenado para consultar registros


Los procedimientos almacenados tambin pueden ser usados para solicitar datos desde la
BD como por ejemplo:
create procedure sucursal_deempleado
@cod nvarchar (4)=null,
@sucursal nvarchar(50) output
As
--- verificamos que se nos de un valor no nulo
if (@cod is null)
begin
print 'debe ingresar codigo de empleado'
return 1 end
--- verificamos que el codigo exista entre los empleados
if not exists(select 1 from Empleado as e where
e.chr_emplcodigo=@cod)
begin
print 'No existe este codigo en el registro de empleados'
return 2 end
--- realizamos la consulta
set @sucursal= (select s.vch_sucunombre+ ','+ s.vch_sucudireccion +
' ' + s.vch_sucuciudad from Sucursal as s inner join Asignado as a on
s.chr_sucucodigo=a.chr_sucucodigo inner join Empleado as e
on e.chr_emplcodigo=a.chr_emplcodigo where e.chr_emplcodigo=@cod)
return 0 go
-----------------Hasta aqui el procedimienteto
---Ahora lo ejecutamos
--- DECLARAMOS UNAS CUANTAS VARIABLES QUE NOS AYUDEN
declare @rtn nvarchar(4),@sucursal nvarchar(50)
--LE DAMOS EL CODIGO del empleado QUE QUEREMOS BUSCAR SU
SUCURSAL A LA --VARIABLE RTN
set @rtn='0001'
--AL EJECUTAR INDICAMOS (POR MEDIO DEL ORDEN ORDENADECUADO)
--QUE VARIABLE VALOR DIIJIMOS A QUE PARAMETRO INCLUYENDO
--LA VARIABLE QUE USAREMOS PARA MOSTRAR EL RESULTADO
--QUE VARIABLE VALOR DIIJIMOS A QUE PARAMETRO INCLUYENDO
--LA VARIABLE QUE USAREMOS PARA MOSTRAR EL RESULTADO
execute

sucursal_deempleado @rtn,@sucursal output

--YA SE ALMACENO EL RESULTADO A LA VARIABLE @sucursal Ahora solo lo


--mostramos
select @sucursal as [Sucursal]

You might also like