Sunteți pe pagina 1din 7

UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA

CARRERA PROFESIONAL INGENIERA DE SISTEMAS

INTRODUCCIN A LOS SISTEMAS DE BASES DE DATOS


SEMESTRE 2015-II

TEMA:
DOCENTE:
FECHA:

GUA DE LABORATORIO N 8
PROCEDIMIENTOS ALMACENADOS
ING. MARIA YORNET CUBA DEL CASTILLO

COMPETENCIAS
El Alumno:
Aplican procedimientos almacenados para el manejo de bases de datos
Demuestran responsabilidad y respeto
BASE TERICA
TRANSACCIN

Es un conjunto de operaciones Transact SQL que se ejecutan como un nico bloque, es decir, si falla una
operacin Transact SQL fallan todas.
Si una transaccin tiene xito, todas las modificaciones de los datos realizadas durante la transaccin se
confirman y se convierten en una parte permanente de la base de datos.
Si una transaccin encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de
los datos.
Es un conjunto de operaciones Transact SQL que se ejecutan como un nico bloque, es decir, si falla una
operacin Transact SQL fallan todas.
Si una transaccin tiene xito, todas las modificaciones de los datos realizadas durante la transaccin se
confirman y se convierten en una parte permanente de la base de datos.
Si una transaccin encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de
los datos.

PROCEDIMIENTOS ALMACENADOS

Est formado por un conjunto de instrucciones Transact-SQL que definen un determinado proceso, puede
aceptar parmetros de entrada y devolver un valor o conjunto de resultados.
Se guarda en el servidor y puede ser ejecutado en cualquier momento.
Se compilan una sola vez y son almacenados
Las siguientes veces son invocados o llamados
Esto mejora notablemente la potencia y eficacia del SQL.

Crear procedimiento almacenado

Se utiliza la instruccin CREATE PROCEDURE o CREATE PROC


CREATE {PROC|PROCEDURE}NombreProcedimiento
[{@parametro tipo} [VARYING] [= valorPredet] [OUT|OUTPUT] ] [,...n]
AS
1

{ <bloque_instrucciones> [ ...n] }[;]


Estas instrucciones no se pueden combinar con otras instrucciones de SQL en el mismo lote
Se crea en la base de datos actual
Ejemplo:
CREATE PROC Calcula_comision AS
CREATE PROCEDURE Calcula_comision AS
Parmetros:
@parametro: representa el nombre de un parmetro.
Se pueden declarar uno o ms parmetros
Debe tener un nombre que empiece con @
Debe tener un tipo de datos
Puede tener un valor por defecto (=valorPredet)
Mximo de 2.100 parmetros
Son locales al procedimiento
OUTPUT o OUT son equivalentes e indican que se trata de un parmetro de salida
Se utiliza una variable para almacenar el valor devuelto por el procedimiento
El orden del envo de parmetros debe coincidir con el definido en el procedimiento
Ejemplo:
CREATE PROCEDURE Dice_Palabra @palabra CHAR(30)
AS
PRINT @palabra;
GO

El procedimiento se compila antes de ser ejecutado


Para ejecutar el procedimiento se utiliza:
EXEC Dice_Palabra 'Lo que quiera';
EXEC Dice_Palabra Como estas?';

Para eliminar un procedimiento almacenado se utiliza la clusula DROP


DROP PROC Dice_Palabra;

EJERCICIOS:
PROCEDIMIENTO ALMACENADO PARA INSERTAR DATOS EN UNA TABLA
1. Crear la BDEjemplo y en ella la tabla Usuario con los campos:
cod_usuario identity
nombre varchar(50)
apellido varchar(50)
pas(varchar(50)

2. Procedimiento almacenado para insertar usuarios

---se crea el procedimiento almacenado


create procedure InsertarUsuarios
---se declaran los parmetros que usaremos
@nombre varchar(50),@apellido varchar(50),@pais varchar(50)
as
---se hace un insert a la tabla usuarios y se envan los parmetros
insert into usuarios
values(@nombre,@apellido,@pais)
3. Ejecucin del PA:

InsertarUsuarios 'Ana','Florez','Peru'
PROCEDIMIENTO ALMACENADO PARA ELIMINAR DATOS EN UNA TABLA
1. Crear el procedimiento almacenado:

---se crea el procedimiento para eliminar usuarios


create procedure Eliminar_usuarios
@nombre varchar(50),@apellido varchar(50)
as
delete usuarios
where nombre=@nombre and apellido=@apellido
2. Ejecutar el PA

Eliminar_usuarios 'Ana','Florez'
PROCEDIMIENTO ALMACENADO PARA INSERTAR DATOS EN UNA TABLA CON CONTROL DE ERRORES
1. La estructura del control de errores TRY-CATCH es:
Begin Try
/*Bloque de instrucciones a validar.
---------------------------------------------------------------------------------*/
End Try
Begin Catch
/*--Bloque de instrucciones que se ejecutan si ocurre
un ERROR.
-----------------------------------------*/
End Catch
2.

La estructura de una Transaccin es:

--Inicio de la transaccin con su nombre Tadd


Begin Tran NombreTransaccion
/*Bloque de instrucciones a ejecutar en la Transaccin
-----------------------------------------------------------------------------*/
3

Commit Tran NombreTransaccion--Confirmacin de la transaccin.


Rollback Tran NombreTransaccion--Reversin de la transaccin.
3. Procedimiento que agrega usuarios
CREATE PROCEDURE AgregaUsuario
@nom AS VARCHAR(50),
@ape AS VARCHAR(50),
@pais AS VARCHAR(50),
@msg AS VARCHAR(100) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
Begin Tran Tadd
Begin Try
INSERT INTO USUARIO(nombre, apellido, pais)
VALUES (@nom, @ape, @pais)
SET @msg = 'El Usuario se registr correctamente.'
COMMIT TRAN Tadd
End try
Begin Catch
SET @msg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la lnea ' +
CONVERT(VARCHAR(255), ERROR_LINE() ) + '.'
Rollback TRAN Tadd
End Catch
END
GO

El procedimiento recibe los datos a travs de parmetros de los cuales uno es de salida OutPut, que servir para indicar
si la Insercin se realiz correctamente o no.

Se crea una transaccin llamada Tadd, valida con TRY-CATCH las inserciones a las tabla USUARIO
Si las operaciones de insercin se ejecutan correctamente las confirma con COMMIT TRAN Tadd y regresa la
variable @msg con un valor de confirmacin correcto, si ocurre un error se revierte la transaccin con ROLLBACK
TRAN Tadd y devuelve en @msg un valor de error.
4. Ejecutando el Procedimiento:

DECLARE @msg AS VARCHAR(100);


EXEC AgregaUsuario 'Claudia','Perez Torres','Argentina',@msg OUTPUT

SELECT @msg AS msg

DESARROLLO DEL LABORATORIO


Ejercicio N 1. Elabore y ejecute los siguientes procedimientos almacenados
1. Crear un procedimiento almacenado que contenga las siguientes instrucciones:

Eliminacin de la tabla "libros" si existe;


Creacin de la tabla "libros" con: codigo, titulo, autor, editorial, precio, cantidad;
Ingreso de algunos registros.

En primer lugar, se elimina el procedimiento almacenado pa_crear_libros si existe:

if object_id('pa_crear_libros') is not null


drop procedure pa_crear_libros
create procedure pa_crear_libros
as
if object_id('libros')is not null
drop table libros
create table libros(
codigo int identity,
titulo varchar(40),
autor varchar(30),
editorial varchar(20),
precio decimal(5,2),
cantidad smallint,
primary key(codigo)
)
insert into libros values('Uno','Richard Bach','Planeta',15,5),
('Ilusiones','Richard Bach','Planeta',18,50),
('El aleph','Borges','Emece',25,9),
('Aprenda PHP','Mario Molina','Nuevo siglo',45,100),
('Matematica','Paenza','Nuevo siglo',12,50),
('Java en 10 minutos','Mario Molina','Paidos',35,300)
--- fin del procedimiento almacenado
Ejecutar el procedimiento almacenado

exec pa_crear_libros
Para verificar la creacin e insercin de datos se realiza una seleccin:

select * from libros


Cdigo

Titulo

Autor

editorial

precio cantidad
5

1
2
3
4
5
6

Uno
Ilusiones
El aleph
Aprenda PHP
Matematica
Java en 10 minutos

Richard Bach
Richard Bach
Borges
Mario Molina
Paenza
Mario Molina

Planeta
Planeta
Emece
Nuevo siglo
Nuevo siglo
Paidos

15,00
18,00
25,00
45,00
12,00
35,00

5
50
9
100
50
300

2. Procedimiento almacenado que muestre los libros de los cuales hay menos de 10. En primer lugar, se
elimina si existe:

if object_id('pa_libros_limite_stock') is not null


drop procedure pa_libros_limite_stock
create proc pa_libros_limite_stock
as
select *from libros
where cantidad <=10
Ejecutar el procedimiento almacenado

exec pa_libros_limite_stock
codigo titulo
autor
editorial precio cantidad
1
Uno
Richard Bach Planeta 15,00 5
3
El aleph Borges
Emece
25,00 9

Modificar un registro

update libros set cantidad=2 where codigo=4


Volver a ejecutar el procedimiento almacenado para verificar los cambios

exec pa_libros_limite_stock
codigo
titulo
Autor
editorial
1
Uno
Richard Bach Planeta
3
El aleph
Borges
Emece
4
Aprenda PHP Mario Molina Nuevo siglo

precio
15,00
25,00
45,00

cantidad
5
9
2

EJERCICIO PROPUESTO
Ejercicio: Una empresa almacena los datos de sus empleados en una tabla llamada "empleado", con los siguientes
campos:

documento char(8),
nombre varchar(20),
apellido varchar(20),
sueldo decimal(6,2),
6

cantidadhijos int,
seccion varchar(20),

1. Elabore y ejecute un procedimiento almacenado que permita el ingreso de datos de los empleados, utilice
parmetros.
2. Cree un procedimiento almacenado llamado "pa_empleados_sueldo" que seleccione los nombres, apellidos y
sueldos de los empleados.
3. Cree un procedimiento almacenado llamado "pa_empleados_hijos" que seleccione los nombres, apellidos y
cantidad de hijos de los empleados con hijos.
4. Elabore un procedimiento almacenado llamado pa_actualizar_ hijos que actualice la cantidad de hijos de algn
empleado sin hijos y vuelva a ejecutar el procedimiento anterior para verificar que ahora si aparece en la lista.
BIBLIOGRAFA
Rodrguez, Jos. Taller de Base de Datos.
Sotomayor, Borja. Ejercicios resueltos de SQL

S-ar putea să vă placă și