Sie sind auf Seite 1von 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
PROCEDIMIENTOS ALMACENADOS
1. OBJETIVO:

Utilizar variables e instrucciones de control de flujo para realizar operaciones sobre los datos.

Conocer y utilizar procedimientos almacenados para

ejecutar una accin o conjunto de

acciones especficas en los datos cuando se cumple una condicin establecida al


realizar una operacin.
2. DESARROLLO:
Utilizar sentencias de control de flujo SQL y realizar lo siguiente:
a. Asignar un valor a una variable tipo VARCHAR con la instruccin SELECT.
Para asignar una variable del tipo varchar con la instruccin select, se usa primero la instruccin
declare, que es la que permite declarar a la variable local seguido de su tipo de dato, en este ejemplo
se utiliza el tipo de dato varchar y la base de datos Universidad.
En la parte de select es necesario igualar el nombre de la variable creada con la variable de la tabla
de la que se quiere asignar el valor mediante si Id.
El comando print es el que permite visualizar el valor de la variable creada.

Figura 1. Asignacin de una variable VARCHAR con la instruccin SELECT

b. Asignar un valor a una variable tipo INT con la instruccin SET.


La instruccin SET permite asignar un valor de cualquier tipo de dato a una variable, es necesario
usar el comando DECLARE para declarar la nueva variable.
En este ejemplo se declara una variable tipo INT y para asignar el valor se usa el comando SET.
Para visualizar los datos se usa el comando print, pero al ser un tipo de dato INT es necesario
convertirlo en una variable varchar, existen dos mtodos para hacer esta actividad.
La primera es mediante la funcin cast que permite convertir un tipo de dato a otro y la funcin
convert que de igual manera convierte tipo de datos.

Figura 2. Asignacin de una variable INT con la instruccin SET


Profesor: Ing. Jonathan Carrillo S.
Pgina 1 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
c. Realizar una Iteracin del bucle que sea definida por una variable y que imprima los n
valores establecidos para el bucle, por ejemplo si n es igual a 10 (n=10), se debe
imprimir: 1 2 3 4 5 6 7 8 9 10
Para crear bucles en primer lugar se deben declarar las variables, despus se utiliza el comando
while que permite crear un ciclo mediante una condicin y en el contenido del while se declaran las
instrucciones que se realizarn mientras se cumpla la condicin.
En este ejemplo se declaran las variables contador y n, contador es la variable que en cada iteracin
se le ir sumando 1 y n es el nmero hasta el cual debe llegar el contador.
Dentro del ciclo while se declaran los comandos begin y end, esto se debe a que dentro del while se
encuentran ms de una lnea de instrucciones.

Figura 3. Iteracin de un bucle

Crear la tabla Lugar como se indica a continuacin y crear los siguientes procedimientos
almacenados:

Create Table Lugar(


Id_Lugar int primary key identity(1,1),
CiudadLugar varchar(15) not null,
ProvinciaLugar varchar(15) not null
);
a. Insertar tuplas
Para crear procedimientos almacenados se utiliza el comando create procedure con el
nombre del procedimiento asignado que en este ejemplo es InsertarLugar.

Profesor: Ing. Jonathan Carrillo S.


Pgina 2 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

Alexis Lema

INFORME DE LABORATORIO # 7
El siguiente paso es declarar la o las variables locales y siguiente a eso escribir la
instruccin que se desea realizar, en caso de que exista ms de una lnea de instruccin, es
necesario agregar los comandos begin y end.

Figura 4. Creacin del procedimiento InsertarLugar

Para ejecutar el proceso se escribe exec seguido del nombre del proceso y los valores que se van a
guardar en la tabla.

Figura 5. Ejecucin del procedimiento InsertarLugar

Como se puede observar al ejecutar el procedimiento se muestra un mensaje que nos informa que
una fila ha sido afectada, este mensaje puede ser modificado u omitido con la funcin set nocount
on o con la funcin print para imprimir un mensaje al ingresar los datos.
Para realizar esta modificacin se requiere utilizar el comando alter y escribir el nuevo contenido de la
tabla.

Figura 6. Modificacin del procedimiento InsertarLugar

Para comprobar que la modificacin del procedimiento se ha ejecutado correctamente, se vuelve a


ejecutarlo y se comprueba que la informacin se encuentre almacenada en la tabla Lugar.

Figura 7. Ejecucin del procedimiento InsertarLugar

Profesor: Ing. Jonathan Carrillo S.


Pgina 3 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7

Figura 8. Visualizacin de la informacin de la tabla Lugar

b. Actualizar datos
Para crear el proceso actualizar datos se procede de la misma manera que en Agregar Tuplas, se
declaran las variables locales y en el contenido de las instrucciones se agrega el comando update
seguido del nombre de la tabla y set donde se igualan los nombres de las columnas de la tabla a las
variables locales, para este proceso se modificar la tupla mediante el Id de la misma.

Figura 9. Creacin del proceso ActualizarLugar

En este ejemplo se modificar la tupla con el Id_Lugar = 1.

Figura 10. Ejecucin del proceso ActualizarLugar

Figura 11. Visualizacin de la tabla Lugar


Profesor: Ing. Jonathan Carrillo S.
Pgina 4 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7

c. Eliminar Registros
Para el proceso de eliminar registros se realiza el mismo procedimiento que en el proceso de
actualizar datos, pero en lugar de declarar varias variables solo se declara el Id y se cambia el
comando update por el comando delete, la eliminacin se la realiza ingresando el Id de la tupla que
desea eliminar.

Figura 12. Creacin del proceso EliminarLugar

Figura 13. Ejecucin del proceso eliminar registros

Figura 14. Visualizacin de la tabla Lugar

d. Insertar datos controlando que no se ingresen ciudades que existan en la Base de


datos
Para realizar este proceso requiere implementar funciones de control que comprueben que los datos
que se van a ingresar no se repitan o no ingresen datos vacos.
Como primer paso al igual que en los procedimientos implementados hasta el momento se declaran
las variables locales, como se tendr ms de una lnea de cdigo es necesario escribir la funcin
begin. En el contenido de begin se escribe la funcin if que es la que permite que los datos
ingresados no sean vacos, en caso de que no sean vacios se crea otro begin, y dentro de este se
declaran nuevas variables locales, en este caso @City y @State. Estas variables se las iguala a las
columnas de la tabla CiudadLugar y ProvinciaLugar, a continuacin se crea otra funcin if donde se
comprueba si las variables son iguales a alguna tupla que hay en la tabla, en caso de que exista una
tupla idntica se imprime un mensaje advirtiendo que no se pueden existir dos tuplas similares, en
caso de que las variables sean distintas se ejecuta el proceso InsertarLugar.
Si se desea ingresar campos vacos en la tabla se muestra un mensaje advirtiendo de este error.
Profesor: Ing. Jonathan Carrillo S.
Pgina 5 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
En las funciones if se declara una instruccin, en caso de que esta no cumpla existe la funcin else
que es donde se procede a realizar otras instrucciones cuando no se cumple el if.

Figura 15. Creacin del proceso IngresoLugarConControl

Figura 16. Ejecucin del proceso IngresoLugarConControl (1)

Figura 17. Ejecucin del proceso IngresoLugarConControl (2)

Figura 18. Visualizacin de la tabla Lugar

Profesor: Ing. Jonathan Carrillo S.


Pgina 6 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
Crear la siguiente relacin en la base de datos Ventas.

En primer lugar se debe crear la tabla Producto, ya que para que exista la relacin
entre la tabla Producto y Pedido, se debe crear la clave primaria de Producto para
que la tabla Pedido la herede.
El atributo Id_Producto es la clave primaria, tiene tipo de dato INT y es
autoincremental de 1 y el primer Id empieza en 555.
NombreProducto es de tipo varchar, no contiene valores NULL y para establecer
que los caracteres ingresados sean mas de 4, se utilizan las funciones check y len,
para no permitir espacios en blanco a la izquierda y a la derecha se usa las
funciones ltrim y rtrim.
FechaProducto es de tipo de dato INT y no permite valores NULL.
El atributo PrecioProducto es de tipo de dato MONEY ya que almacena un valor
monetario, no permite valores NULL y para establecer que el valor ingresado sea
mayor que 0 se usa la funcin check.
En StockProducto se asinga el tipo de dato INT, no permite valores NULL y para
que los valores ingresados sean mayores o igual que 0 se lo hace mediante la
funcin check.

Figura 19. Creacin de la Tabla Producto

Profesor: Ing. Jonathan Carrillo S.


Pgina 7 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
Para crear la relacin en la tabla Pedido se crea una clave fornea de Id_Producto,
Para crear la tabla Producto se usa el comando create table, seguido del nombre
de la tabla. Para el atributo Id_Pedido se la declara como tipo de dato INT, primary
key con identity (1,1) y al ser la clave primaria no puede tener valores NULL.
Para CantidadPedido se lo declara como tipo de dato INT, que no permita valores
NULL y la restriccin para que sea mayor que 0 se lo hace con la funcin check.
En LugarPedido se lo declara como char, no puede tener valores null y al igual que
en CantidadPedido se utiliza la funcin check para comprobar que se ingrese
solamente entre los valores permitidos.
Para crear la relacin entre la tabla Producto y Pedido se crea una clave fornea
de Id_Producto en Pedido. Esta clave es de tipo de dato INT y no permite valores
NULL.

Figura 20. Creacin de la Tabla Pedido

A base del esquema anterior, crear un procedimiento almacenado que permita realizar
un PEDIDO. Este procedimiento deber verificar si el cdigo del producto ingresado
existe en la tabla PRODUCTO, adems, si la cantidad a pedir es mayor a la existencia
del producto, el procedimiento deber enviar un mensaje que diga EXISTENCIA DEL
PRODUCTO INSUFICIENTE. En caso que la cantidad a pedir sea menor o igual
deber modificar el valor de la existencia.
Crear primero un procedimiento almacenado denominado DatosPedido para que
despliegue la informacin de la tabla anterior.
Como primer paso para esta actividad se crea el proceso DatosPedido, donde mediante el Id del
Producto se selecciona el nombre y stock del pedido.

Figura 21. Creacin del proceso DatosPedido

Profesor: Ing. Jonathan Carrillo S.


Pgina 8 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
El siguiente paso es crear el proceso RealizarPedido, en primer lugar se crean las variables locales
@Id_Producto, @CantidadPedido y @LugarPedido, cada una con su respectivo tipo de dato.
Es necesario agregar la funcin begin ya que se implementarn varias lneas de cdigo, a
continuacin se declaran las variables @Existe y @Stock tipo INT, las cuales servirn para determinar
si el producto existe y para contabilizar el stock.
En la seccin de set @Existe se comprueba que el Id del producto exista en la tabla Producto, en la
seccin select se asigna el stock del producto con el Id ingresado a la variable @Stock.
Es necesario implementar la sentencia if con la que se comprueba si el producto existe o no, en caso
de que no exista se muestra un mensaje donde indica que no es posible realizar el pedido.
Si el producto existe se aade la funcin else y dentro de esta otro if que comprueba que la cantidad
del pedido del producto sea menor que la cantidad del stock.
Si se cumple que la cantidad de producto sea mayor que la del pedido, se crea otro if donde se
ejecuta el proceso DatosPedido y se insertan las variables en la tabla Pedido, es importante agregar
el comando Update para actualizar los datos de la tabla Producto donde se realiza el procedimiento
de quitar la cantidad del pedido al stock del producto y por ltimo se vuelve a ejecutar el proceso
DatosPedido.

Figura 22. Creacin del proceso RealizarPedido

Profesor: Ing. Jonathan Carrillo S.


Pgina 9 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7

Figura 23. Tabla Productos antes de realizar el proceso RealizarProducto

Figura 24. Ejecucin del proceso RealizarPedido (1)

Figura 25. Ejecucin del proceso RealizarPedido (2)

Figura 26. Tabla Producto luego de ejecutar el proceso RealizarPedido

Figura 27. Tabla Pedido

Profesor: Ing. Jonathan Carrillo S.


Pgina 10 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
3. CUESTIONARIO DE INVESTIGACIN:

Mediante ejemplos muestre la utilidad de la sentencias de control de flujo: IF, WHILE,


BREAK, CONTINUE, RETURN y CASE del Transact-SQL.
IF: Para esta sentencia de control se utiliza un ejemplo en el cual se establece el valor de un nmero,
en la sentencia if se comparan los valores y si es mayor o menor imprime un mensaje.

Figura 28. Ejemplo de la sentencia IF

WHILE: En este ejemplo se realiza la suma de un nmero hasta llegar a un valor definido, al final
imprime un mensaje sealando el valor del nmero hasta llegar al lmite.

Figura 29. Ejemplo de la sentencia WHILE

BREAK: Esta funcin viene acompaada de la sentencia WHILE y sirve para finalizar el ciclo. En este
ejemplo se declara un nmero, mientras este nmero sea diferente de 5 se sumar 1, si llega hasta 5
el ciclo se rompe. Si se declara un nmero mayor que 5 se seguir sumando 1 a este nmero hasta
llegar a un lmite establecido.

Profesor: Ing. Jonathan Carrillo S.


Pgina 11 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7

Figura 30. Ejemplo de la sentencia BREAK

CONTINUE: La sentencia CONTINUE acompaa al WHILE y permite continuar con la siguiente


instruccin. En este ejemplo se realiza un ciclo donde una variable suma 1 hasta un lmite, pero al
llegar al valor de 3 omite el ciclo y sigue la instruccin, al final se asigna el valor de la variable i a j y la
imprime.

Figura 31. Ejemplo de la sentencia CONTINUE

RETURN: la sentencia RETURN regresa un estado de un procedimiento o proceso de lotes, en este


ejemplo se lo implementa un proceso para realizar la suma de dos nmeros, si uno de los nmeros
ingresados es negativo, no realiza el proceso.

Profesor: Ing. Jonathan Carrillo S.


Pgina 12 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7

Figura 32. Ejemplo de la sentencia RETURN

CASE: esta sentencia permite realizar actualizaciones o consultas condicionales, en este ejemplo se
establece una variable en la cual de acuerdo al valor establecido, imprime un mensaje indicando el
case correspondiente.

Figura 33. Ejemplo de la sentencia CASE

Profesor: Ing. Jonathan Carrillo S.


Pgina 13 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
A base de la tabla Empleado que se encuentra a continuacin (trabajo autnomo del
laboratorio anterior), insertar por lo menos 10 empleados y realizar los siguientes
procedimientos almacenados:
Cree un procedimiento almacenado que imprima por pantalla los aos trabajados en la
empresa de un empleado. Deber de recibir por parmetro el cdigo de empleado.
Para crear el procedimiento que imprima los aos de los empleados se declara la variable
Id_Empleado que es donde ingresaremos el Id del empleado para determinar los aos que lleva
trabajando en la empresa. Se declaran tambin las variables @existe, para la comprobacin de si
existe el Id, @AnioIngreso donde se guarda el ao extrado de FechaIngresoEmpleado,
@AnioSalida donde se guarda el ao extrado de FechaSalidaEmpleado. El ao se extrae
mediante la sentencia YEAR. Si el Id ingresado no existe en la tabla Empleado se muestra un
mensaje donde seala que no es posible realizar la comprobacin.Si el Id ingresado existe se
procede a realizar un proceso donde se establece a @AniosTrabajados la resta de @AnioSalida
menos @AnioIngreso. Por tlimo se imprime los aos trabajados transformndolos a un varchar
con la sentencia cast.

Figura 34. Creacin del procedimiento AniosTrabajo

Profesor: Ing. Jonathan Carrillo S.


Pgina 14 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

Alexis Lema

INFORME DE LABORATORIO # 7

Figura 35. Ejecucin del procedimiento AniosTrabajo

Un procedimiento almacenado que permita aumentar el sueldo en un 10% de todos los


empleados que tengan ms de 31 aos en la empresa.
Para crear este procedimiento se declara la variable @Sueldo, @SueldoEmpleado, @Porcentaje
y se seleccionan el Id de los empleados donde el resultado de la resta del ao de la fecha actual
menos el ao de la fecha de nacimiento del empleado sea mayor a 31, despus se procede a
actualizar el sueldo del empleado realizando la operacin de sumar el 10% del sueldo del
empleado.

Figura 36. Creacin del procedimiento AumentarSueldo

Profesor: Ing. Jonathan Carrillo S.


Pgina 15 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7
Cree un pequeo mantenedor para la tabla empleado a travs de un procedimiento
almacenado (Actualizar, Insertar, Borrar)
Actualizar: en actualizar se declaran todas las variables que contiene Empleado y con el
comando update se asignan los nuevos valores ingresados. Es importante ingresar primero el Id
del empleado que se quiere actualizar los datos.

Figura 37. Creacin del procedimiento ActualizarEmpleado

Insertar: en este proceso se declaran las variables de la tabla empleado a excepcin del Id ya que
este se genera automticamente y con el comando insert into se almacenan las variables en la tabla.

Figura 38. Creacin del procedimiento IngresarEmpleado

Profesor: Ing. Jonathan Carrillo S.


Pgina 16 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

Alexis Lema

INFORME DE LABORATORIO # 7

Figura 39. Creacin del procedimiento IngresarEmpleado

4. CONCLUSIONES:
Los procesos son de gran ayuda ya que estos contienen instrucciones que deben realizarse para el
ingreso, lectura de datos o una determinada accin, estos solo deben ejecutarse una sola vez
ingresando los datos que se desean almacenar, leer, modificar o eliminar evitando as crear el cdigo
de nuevo, ya que esto puede resultar tedioso. Los procesos de igual forma aceleran el proceso de
bsqueda para datos que tengan cierta caracterstica en comn.
5. BIBLIOGRAFA:
Microsoft

(2016)

YEAR

(Transact-SQL).

Recuperado

el

19

de

Junio

de

2016

de:

el

19

de

Junio

de

2016

de:

https://msdn.microsoft.com/es-es/library/ms186313.aspx
Microsoft

(2016)

WHILE

(Transact-SQL).

Recuperado

https://msdn.microsoft.com/en-us/library/ms178642.aspx
Microsoft (2016) Restricciones UNIQUE y restricciones CHECK. Recuperado el 19 de Junio de 2016
de https://msdn.microsoft.com/es-es/library/ms187550(v=sql.120).aspx
Microsoft (2016) Procedimientos almacenados (motor de base de datos). Recuperado el 19 de Junio
de 2016 de https://msdn.microsoft.com/es-ec/library/ms190782.aspx
Technet (2016) Using WHILE...BREAK or CONTINUE. Recuperado el 19 de Junio de 2016 de
https://technet.microsoft.com/en-us/library/ms190385(v=sql.105).aspx

6. ANEXOS:

Diagrama de Relacin de las tablas Pedido y Producto:


Profesor: Ing. Jonathan Carrillo S.
Pgina 17 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7

Diagrama de la Tabla Lugar:

Diagrama Tabla Empleado:


Profesor: Ing. Jonathan Carrillo S.
Pgina 18 de 19

Facultad de Ingeniera y Ciencias

BASES DE DATOS I
Alexis Lema

Fecha de realizacin:
13 de Junio de 2016
Fecha de entrega
20 de Junio de 2016

INFORME DE LABORATORIO # 7

Profesor: Ing. Jonathan Carrillo S.


Pgina 19 de 19

Das könnte Ihnen auch gefallen