SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Universidad Nacional Jorge Basadre Grohmann /FACI
Escuela Académico Profesional de Ingeniería en Informática y Sistemas
Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007
Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 1/7
Ing. Edwin Ramos Velásquez
Guía de práctica de laboratorio 11
Tema: Procedimientos almacenados
OBJETIVOS
Programación de lenguaje SQL con Procedimientos almacenados: Creación,
Modificación, Eliminación, Permisos. Ejecución. Parámetros (Input/Output).
Tipo de datos. Declaración de Variables. Variables locales y globales
Gestión de Objetos Temporales
1.1.Ejemplo1: Realice un procedimiento, que permita buscar Proveedores de
un determinado País. La información a obtener es: nombre del proveedor,
ciudad, teléfono y código postal. El nombre del país es indicado por el
usuario.
1.2.En el administrador Corporativo, seleccionar su base datos y ubícate en la
sección Procedimientos Almacenados. Ahora ir al menú Herramientas/
Analizador de Consultas. Usted debe conectarse con el usuario01 para
que pueda crear el procedimiento almacenado. Verificar que este
conectado a su base de datos correspondiente:
1.3.Nota: No se olvide de guardar el código del procedimiento (archivo .sql) y el
resultado (archivo .rpt) en su disco de trabajo.
1.4.Creación del Procedimiento: Tipear el siguiente código
CREATE PROCEDURE dbo.usp_BuscarProveedorPorPais
@Pais varchar(40)
AS
SELECT Nombre, Direccion_1, Region, Telefono
FROM Proveedor
WHERE Pais = @Pais
If @@RowCount = 0
Begin
PRINT 'No se encontraron proveedores en este país'
RETURN -1 /*Devolver código de estado */
End
RETURN 0
1.5.Compilación del procedimiento: Seleccionar todo el procedimiento y luego
pulse la tecla F5 para compilar y almacenarlo en el servidor de base de
datos.
1.6.Si existen errores en la compilación, corrige estos errores con la ayuda del
profesor.
1.7.En caso de que vea el mensaje de error: "Permiso CREATE
PROCEDURE denegado en la base de datos 'DistribComerXXX'." Consulte
a su profesor sobre como puede otorgar permisos al Usuario01 para que
pueda CREAR ó MODIFICAR procedimientos.
Universidad Nacional Jorge Basadre Grohmann /FACI
Escuela Académico Profesional de Ingeniería en Informática y Sistemas
Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007
Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 2/7
Ing. Edwin Ramos Velásquez
1.8.Nota: Si desea modificar el procedimiento Usted puede usar el comando
ALTER: (solo debe cambiar la palabra CREATE por ALTER y volver a
compilar el procedimiento)
ALTER PROCEDURE dbo.usp_BuscarProveedorPorPais
1.9.Ejecución del procedimiento: Ahora debe probar si funciona correctamente,
por ejemplo buscar los proveedores de "Japón".
EXEC usp_BuscarProveedorPorPais 'Japón'
1.10. ¿Buscar los proveedores de los siguientes Países?; Canadá, EE.UU,
Francia, Reino Unido
1.11. Ahora abrir otra ventana del analizador de consultas, y conéctate con
el usuario02 (Usuario limitado)
1.12. Intente ejecutar el procedimiento almacenado con el comando:
EXEC usp_BuscarProveedorPorPais 'Canadá'
1.13. ¿Puede ejecutar el procedimiento almacenado?
1.14. ¿Cómo se puede otorgar permisos al usuario02 para que pueda
ejecutar este procedimiento almacenado?. ¿Cómo se realiza el
otorgamiento de permisos en el Administrador corporativo? y ¿Qué
comando usaría en el Analizador de consultas para dar permisos?
1.15. Ejemplo2: Crear un procedimiento, que permita buscar un
determinado empleado por su código. El código se debe transferir
como parámetro INPUT del procedimiento. Si existe el código se debe
mostrar la siguiente información: Apellidos y Nombres (en una sola
columna), Teléfono, Edad y Obs. En la columna Obs de debe
mostrar según su edad si es "Menor de Edad" ó "Empleado Joven" o
"Empleado Adulto". En caso de que no exista se debe mostrar un
mensaje apropiado.
1.16. Creación del Procedimiento: Tipear el siguiente código
CREATE PROCEDURE usp_BuscarEmpleado
@CodEmp int = 0-- Valor inicial será CERO
AS
IF Exists ( SELECT cod_empleado FROM empleado WHERE
cod_empleado = @CodEmp)
Begin
SELECT [Apellidos y Nombres] = Apellidos + ', '
+ Nombres ,Telefono = Tfno_Particular ,
Edad =
(datediff(month,Fecha_Nacimiento,GetDate()))/12 ,
Obs = CASE WHEN
(datediff(month,Fecha_Nacimiento,GetDate()))/12 < 18
Universidad Nacional Jorge Basadre Grohmann /FACI
Escuela Académico Profesional de Ingeniería en Informática y Sistemas
Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007
Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 3/7
Ing. Edwin Ramos Velásquez
THEN 'Es menor de edad' WHEN
(datediff(month,Fecha_Nacimiento,GetDate()))/12 < 25
THEN 'Empleado Joven'
ELSE 'Empleado Adulto'
END
FROM empleado WHERE cod_empleado = @CodEmp
End
ELSE
Begin
PRINT 'No existe el empleado con el codigo
indicado..:'+Str(@CodEmp)
RETURN -1 /*Devolver codigo de estado */
End
RETURN 0
1.17. Compilación del procedimiento: Seleccionar todo el procedimiento y
luego pulse la tecla F5 para compilar y almacenarlo en el servidor de
base de datos.
1.18. Si existen errores en la compilación, corrige estos errores con la ayuda
del profesor.
1.19. Ejecución del procedimiento: Ahora debe probar si funciona
correctamente, ejecutando lo siguiente
EXEC usp_BuscarEmpleado 7
1.20. Resultado:
Apellidos y Nombres Telefono Edad Obs
-------------------------------- ------------------
King, Robert 715555598 44 Empleado Adulto
(1 filas afectadas)
1.21. Ahora responda las siguientes preguntas: Consulte a su profesor en
caso que tenga dudas.
1.21.1. ¿Cuántos parámetros tiene el procedimiento y de que tipo de
datos es?
1.21.2. ¿Qué cláusulas SQL usamos?
1.21.3. ¿Qué operadores usamos?
1.21.4. ¿Cuántas columnas son físicas y cuantas columnas son
calculadas?
1.21.5. ¿Qué realiza RETURN y PRINT?
1.21.6. ¿Para que sirve CASE?
1.21.7. ¿En qué parte del procedimiento existen comentarios?
Universidad Nacional Jorge Basadre Grohmann /FACI
Escuela Académico Profesional de Ingeniería en Informática y Sistemas
Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007
Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 4/7
Ing. Edwin Ramos Velásquez
1.21.8. ¿Qué permite BEGIN y END?
1.22. Ahora abrir ó seleccionar la otra ventana del analizador de consultas
donde esta conectado el usuario02 (Usuario limitado)
1.23. Intente ejecutar el procedimiento almacenado con el comando:
EXEC usp_BuscarEmpleado 7
1.24. Intente ejecutar el procedimiento almacenado con el comando:
¿Puede ejecutar el procedimiento almacenado? ¿Qué tiene que
realizar para que pueda ejecutarlo?
2.3. Ejemplo3. Realice un procedimiento que permita devolver una listado de
Clientes que pidieron un determinado producto y en el mes indicado por el
usuario (Transferir estos datos como parámetros). Se debe obtener: Código
del Cliente, Nombre del cliente, Fecha de pedido y la Precio unitario. El
resultado debe estar ordenado por la fecha de pedido.
a) Creación del Procedimiento: Tipear el siguiente código
CREATE PROCEDURE dbo.usp_PedidoClienteProducto
@CodProd int, @Mes int = 1
AS
SELECT Pedido.Cod_Cliente,
Cliente.Nombre_cliente,
Pedido.Fecha_Pedido,
Detalle_pedido.Precio_por_unidad
FROM Pedido
INNER JOIN Cliente
ON Pedido.Cod_cliente = Cliente.cod_cliente
INNER JOIN Detalle_Pedido
ON Pedido.Id_pedido = Detalle_pedido.Id_pedido
WHERE Detalle_Pedido.cod_producto = @CodProd AND
Month(Pedido.Fecha_pedido) = @Mes
ORDER BY Pedido.Fecha_pedido
RETURN 0
b) Compilación del procedimiento: Seleccionar todo el procedimiento y
luego pulse la tecla F5 para compilar y almacenarlo en el servidor de base
de datos.
• Si existen errores, consulte a su profesor.
c) Ejecución del procedimiento: Ahora debe probar si funciona
correctamente, ejecutando lo siguiente
• Ahora ejecútelo. Por ejemplo para el producto que tiene codigo "1101" y en
el mes de Febrero
Universidad Nacional Jorge Basadre Grohmann /FACI
Escuela Académico Profesional de Ingeniería en Informática y Sistemas
Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007
Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 5/7
Ing. Edwin Ramos Velásquez
EXEC usp_PedidoClienteProducto 1101, 2
• RESULTADO:
Cod_Cliente Nombre_cliente Fecha_Pedido Precio_por_unidad
----------- --------------------- -------------------------- -----------------
30 Spokes for Folks 2002-02-19 00:00:00.000 14.5000
57 Tek Bikes 2002-02-22 00:00:00.000 14.5000
33 Fulcrum Cycles 2003-02-18 00:00:00.000 14.5000
58 Making Tracks 2003-02-18 00:00:00.000 14.5000
(4 filas afectadas)
• Ahora ejecute el procedimiento de otra forma. ¿Explique el resultado?
EXEC usp_PedidoClienteProducto 1101, DEFAULT
d) Ahora responda las siguientes preguntas: Consulte a su profesor en caso
que tenga dudas.
• ¿Cuántos parámetros tiene el procedimiento y de que tipo de datos es?
• ¿Cuántas columnas son físicas y cuantas columnas son calculadas?
• ¿Qué permite DEFAULT?.
e) Ahora abrir ó seleccionar la otra ventana del analizador de consultas donde
esta conectado el usuario02 (Usuario limitado)
• Intente ejecutar el procedimiento almacenado con el comando:
• ¿Puede ejecutar el procedimiento almacenado? ¿Qué tiene que realizar para
que pueda ejecutarlo?
2.4. Ejemplo4. Crear un procedimiento almacenado similar al ejemplo2, pero
ahora la información se debe retornar por parámetros
OUTPUT.
a) Creación del Procedimiento: Tipear el siguiente código
CREATE PROCEDURE dbo.usp_BuscarEmpleado2
@CodEmp int = 0,
@ApeNom varchar(40) OUTPUT, @TelEmp Varchar(10) OUTPUT,
@EdadEmp Numeric(2) OUTPUT, @ObsEdad varchar(25) OUTPUT AS
IF Exists ( SELECT cod_empleado FROM empleado WHERE
cod_empleado = @CodEmp)
Begin
SELECT @ApeNom = Apellidos + ', ' + Nombres ,
@TelEmp = Tfno_Particular ,
@EdadEmp = Year(GetDate()) - Year(Fecha_Nacimiento) ,
Universidad Nacional Jorge Basadre Grohmann /FACI
Escuela Académico Profesional de Ingeniería en Informática y Sistemas
Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007
Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 6/7
Ing. Edwin Ramos Velásquez
@ObsEdad = CASE WHEN Year(GetDate()) -
Year(Fecha_Nacimiento) < 18 THEN 'Es menor de edad' WHEN
Year(GetDate()) - Year(Fecha_Nacimiento) < 25 THEN 'Empleado
Joven' ELSE 'Empleado Adulto'
END
FROM empleado WHERE cod_empleado = @CodEmp
End
ELSE
Begin
PRINT 'No existe el empleado con el codigo
indicado..:'+Str(@CodEmp)
RETURN -1 /*Devolver codigo de estado */
End
RETURN 0
b) Compilación del procedimiento: Seleccionar todo el procedimiento y luego
pulse la tecla F5 para compilar y almacenarlo en el servidor de base de datos.
• Si existen errores, consulte a su profesor.
c) Ejecución del procedimiento: Ahora debe probar si funciona correctamente,
ejecutando lo siguiente
• Ahora ejecútelo.
DECLARE @ApeNom Varchar(40), @Tel Varchar(10) DECLARE @Edad
Numeric(2), @Obs Varchar(25)
EXEC usp_BuscarEmpleado2 7, @ApeNom OUTPUT, @Tel OUTPUT, @Edad
OUTPUT, @Obs OUTPUT Select @ApeNom as [Apellidos y Nombres], @Tel
as Telefono, @Edad as Edad, @Obs as Observ
• RESULTADO:
Apellidos y Nombres Telefono Edad Observ
---------------------------------------- ------
King, Robert 715555598 44 Empleado Adulto
(1 filas afectadas)
d) Ahora responda las siguientes preguntas: Consulte a su profesor en caso
que tenga dudas.
• ¿Dónde se almacenan los Procedimientos Almacenados y donde los
procedimientos temporales?
• ¿Cómo puede modificar un procedimiento desde el Administrador corporativo?
Universidad Nacional Jorge Basadre Grohmann /FACI
Escuela Académico Profesional de Ingeniería en Informática y Sistemas
Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007
Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 7/7
Ing. Edwin Ramos Velásquez
• ¿Cuántos parámetros tiene el procedimiento y de que tipo de datos es?
• ¿Qué permite DECLARE?.
e) Ahora abrir ó seleccionar la otra ventana del analizador de consultas donde
esta conectado el usuario02 (Usuario limitado)
• Intente ejecutar el procedimiento almacenado con el comando:
• ¿Puede ejecutar el procedimiento almacenado? ¿Qué tiene que realizar para
que pueda ejecutarlo?
2.5. Ejercicios para ser realizado por el alumno, con el apoyo del Profesor:.
a) Realice un procedimiento que permita mostrar los Productos solicitados por
un determinado Cliente, solo se debe mostrar los productos donde la cantidad de
pedido es menor a 3: Se debe obtener Código del producto, Fecha de pedido,
Nombre del producto, precio unitario, Cantidad pedida.
b) Realice un procedimiento que muestre el total de clientes que piden cada
producto en un determinado trimestre. Si el total de clientes de un producto es
menor a 5 se debe mostrar en una columna de Observaciones el texto "Pocos
Clientes", en otro caso esta columna debe mostrar "Muchos clientes"
Sugerencia: puede usar Tablas Temporales o Físicas en la consulta. Consulte al
profesor para más información.
c) Crear un procedimiento que permita agregar un nuevo registro en la
tabla Pedido. Los nuevos datos se deben transferir como parámetros. Se debe
verificar si ocurrieron errores, es decir, debe comprobar si los campos de tipo FK
tienen un valor valido para cumplir con la integridad referencial.
III.- Información Adicional
3.1 Que realiza los siguientes comandos (Ejecutar con el usuario01)
GRANT INSERT, UPDATE, DELETE ON Cliente
TO Edgar02, Elvis02, Walter02
GO
GRANT CREATE PROCEDURE TO Edgar02
3.2 Que realiza la siguiente siguiente comando (Ejecutar con el usuario01)
GRANT EXEC
ON dbo.usp_BuscarEmpleado
TO Edgar02

Más contenido relacionado

Destacado

Destacado (14)

Guia lab08 bd
Guia lab08 bdGuia lab08 bd
Guia lab08 bd
 
Ma
MaMa
Ma
 
subbneteo vlsm practico completa
subbneteo vlsm practico completasubbneteo vlsm practico completa
subbneteo vlsm practico completa
 
Guía 2da sesión ordinaria
Guía 2da sesión ordinariaGuía 2da sesión ordinaria
Guía 2da sesión ordinaria
 
O.e.z operações especiais zap
O.e.z   operações especiais zapO.e.z   operações especiais zap
O.e.z operações especiais zap
 
Cultura b
Cultura bCultura b
Cultura b
 
Tesina
TesinaTesina
Tesina
 
Impacto de las aulas virtuales en la educación
Impacto de las aulas virtuales en la educaciónImpacto de las aulas virtuales en la educación
Impacto de las aulas virtuales en la educación
 
Ri a9
Ri a9Ri a9
Ri a9
 
Documentación
Documentación Documentación
Documentación
 
Directiva uap-2013
Directiva uap-2013Directiva uap-2013
Directiva uap-2013
 
Final Report: Proyecto Ambiental TALPUY - Lima\Peru
Final Report: Proyecto Ambiental TALPUY - Lima\PeruFinal Report: Proyecto Ambiental TALPUY - Lima\Peru
Final Report: Proyecto Ambiental TALPUY - Lima\Peru
 
Servidor Php
Servidor PhpServidor Php
Servidor Php
 
Pratica1
Pratica1Pratica1
Pratica1
 

Similar a Guia lab11 bd

Guia aprendizaje 2 Grado 11 planeacion-rmb
Guia aprendizaje  2  Grado  11 planeacion-rmbGuia aprendizaje  2  Grado  11 planeacion-rmb
Guia aprendizaje 2 Grado 11 planeacion-rmbEQUIPO # 11
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmbsamy254
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmbAndres Hernandez
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmbEQUIPO # 11
 
Guía de Laboratorio 1 - VB.NET 2005
Guía de Laboratorio 1 - VB.NET 2005Guía de Laboratorio 1 - VB.NET 2005
Guía de Laboratorio 1 - VB.NET 2005Jose Ponce
 
Proyecto elaboración y mantenimiento de sistemas de información
Proyecto elaboración y mantenimiento de sistemas de informaciónProyecto elaboración y mantenimiento de sistemas de información
Proyecto elaboración y mantenimiento de sistemas de informaciónAris Juarez
 
Guia de aprendizaje ie académico 10° análisis (1)
Guia de aprendizaje ie académico 10° análisis (1)Guia de aprendizaje ie académico 10° análisis (1)
Guia de aprendizaje ie académico 10° análisis (1)Hernando Castañeda Aguirre
 
Practica Seis Delphi
Practica Seis DelphiPractica Seis Delphi
Practica Seis DelphiJose Ponce
 
Trabajo de base de datos
Trabajo de base de datosTrabajo de base de datos
Trabajo de base de datosMerlyn Peraza
 
Tutorial wampserver
Tutorial wampserverTutorial wampserver
Tutorial wampservererika_ortiz
 
Notas_Analisis_Requerimiento.pdf
Notas_Analisis_Requerimiento.pdfNotas_Analisis_Requerimiento.pdf
Notas_Analisis_Requerimiento.pdfYoutubVer
 

Similar a Guia lab11 bd (20)

Sistemas Multiusuarios Windows server 2003
Sistemas Multiusuarios Windows server 2003Sistemas Multiusuarios Windows server 2003
Sistemas Multiusuarios Windows server 2003
 
Analisis
AnalisisAnalisis
Analisis
 
Proyecto
ProyectoProyecto
Proyecto
 
Proyecto
ProyectoProyecto
Proyecto
 
Practicas
PracticasPracticas
Practicas
 
Guia aprendizaje 2 Grado 11 planeacion-rmb
Guia aprendizaje  2  Grado  11 planeacion-rmbGuia aprendizaje  2  Grado  11 planeacion-rmb
Guia aprendizaje 2 Grado 11 planeacion-rmb
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmb
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmb
 
Guia aprendizaje 2 grado 11 planeacion -rmb
Guia aprendizaje  2   grado  11 planeacion -rmbGuia aprendizaje  2   grado  11 planeacion -rmb
Guia aprendizaje 2 grado 11 planeacion -rmb
 
Ante proyecto de desarrollo de software
Ante proyecto de desarrollo de softwareAnte proyecto de desarrollo de software
Ante proyecto de desarrollo de software
 
Guía de Laboratorio 1 - VB.NET 2005
Guía de Laboratorio 1 - VB.NET 2005Guía de Laboratorio 1 - VB.NET 2005
Guía de Laboratorio 1 - VB.NET 2005
 
Pu 2do msimr - unidad-3
Pu   2do msimr - unidad-3Pu   2do msimr - unidad-3
Pu 2do msimr - unidad-3
 
Proyecto elaboración y mantenimiento de sistemas de información
Proyecto elaboración y mantenimiento de sistemas de informaciónProyecto elaboración y mantenimiento de sistemas de información
Proyecto elaboración y mantenimiento de sistemas de información
 
Guia de aprendizaje ie académico 10° análisis (1)
Guia de aprendizaje ie académico 10° análisis (1)Guia de aprendizaje ie académico 10° análisis (1)
Guia de aprendizaje ie académico 10° análisis (1)
 
Analisis
AnalisisAnalisis
Analisis
 
Practica Seis Delphi
Practica Seis DelphiPractica Seis Delphi
Practica Seis Delphi
 
Trabajo de base de datos
Trabajo de base de datosTrabajo de base de datos
Trabajo de base de datos
 
Tutorial wampserver
Tutorial wampserverTutorial wampserver
Tutorial wampserver
 
Taller 1 access
Taller 1 accessTaller 1 access
Taller 1 access
 
Notas_Analisis_Requerimiento.pdf
Notas_Analisis_Requerimiento.pdfNotas_Analisis_Requerimiento.pdf
Notas_Analisis_Requerimiento.pdf
 

Guia lab11 bd

  • 1. Universidad Nacional Jorge Basadre Grohmann /FACI Escuela Académico Profesional de Ingeniería en Informática y Sistemas Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007 Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 1/7 Ing. Edwin Ramos Velásquez Guía de práctica de laboratorio 11 Tema: Procedimientos almacenados OBJETIVOS Programación de lenguaje SQL con Procedimientos almacenados: Creación, Modificación, Eliminación, Permisos. Ejecución. Parámetros (Input/Output). Tipo de datos. Declaración de Variables. Variables locales y globales Gestión de Objetos Temporales 1.1.Ejemplo1: Realice un procedimiento, que permita buscar Proveedores de un determinado País. La información a obtener es: nombre del proveedor, ciudad, teléfono y código postal. El nombre del país es indicado por el usuario. 1.2.En el administrador Corporativo, seleccionar su base datos y ubícate en la sección Procedimientos Almacenados. Ahora ir al menú Herramientas/ Analizador de Consultas. Usted debe conectarse con el usuario01 para que pueda crear el procedimiento almacenado. Verificar que este conectado a su base de datos correspondiente: 1.3.Nota: No se olvide de guardar el código del procedimiento (archivo .sql) y el resultado (archivo .rpt) en su disco de trabajo. 1.4.Creación del Procedimiento: Tipear el siguiente código CREATE PROCEDURE dbo.usp_BuscarProveedorPorPais @Pais varchar(40) AS SELECT Nombre, Direccion_1, Region, Telefono FROM Proveedor WHERE Pais = @Pais If @@RowCount = 0 Begin PRINT 'No se encontraron proveedores en este país' RETURN -1 /*Devolver código de estado */ End RETURN 0 1.5.Compilación del procedimiento: Seleccionar todo el procedimiento y luego pulse la tecla F5 para compilar y almacenarlo en el servidor de base de datos. 1.6.Si existen errores en la compilación, corrige estos errores con la ayuda del profesor. 1.7.En caso de que vea el mensaje de error: "Permiso CREATE PROCEDURE denegado en la base de datos 'DistribComerXXX'." Consulte a su profesor sobre como puede otorgar permisos al Usuario01 para que pueda CREAR ó MODIFICAR procedimientos.
  • 2. Universidad Nacional Jorge Basadre Grohmann /FACI Escuela Académico Profesional de Ingeniería en Informática y Sistemas Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007 Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 2/7 Ing. Edwin Ramos Velásquez 1.8.Nota: Si desea modificar el procedimiento Usted puede usar el comando ALTER: (solo debe cambiar la palabra CREATE por ALTER y volver a compilar el procedimiento) ALTER PROCEDURE dbo.usp_BuscarProveedorPorPais 1.9.Ejecución del procedimiento: Ahora debe probar si funciona correctamente, por ejemplo buscar los proveedores de "Japón". EXEC usp_BuscarProveedorPorPais 'Japón' 1.10. ¿Buscar los proveedores de los siguientes Países?; Canadá, EE.UU, Francia, Reino Unido 1.11. Ahora abrir otra ventana del analizador de consultas, y conéctate con el usuario02 (Usuario limitado) 1.12. Intente ejecutar el procedimiento almacenado con el comando: EXEC usp_BuscarProveedorPorPais 'Canadá' 1.13. ¿Puede ejecutar el procedimiento almacenado? 1.14. ¿Cómo se puede otorgar permisos al usuario02 para que pueda ejecutar este procedimiento almacenado?. ¿Cómo se realiza el otorgamiento de permisos en el Administrador corporativo? y ¿Qué comando usaría en el Analizador de consultas para dar permisos? 1.15. Ejemplo2: Crear un procedimiento, que permita buscar un determinado empleado por su código. El código se debe transferir como parámetro INPUT del procedimiento. Si existe el código se debe mostrar la siguiente información: Apellidos y Nombres (en una sola columna), Teléfono, Edad y Obs. En la columna Obs de debe mostrar según su edad si es "Menor de Edad" ó "Empleado Joven" o "Empleado Adulto". En caso de que no exista se debe mostrar un mensaje apropiado. 1.16. Creación del Procedimiento: Tipear el siguiente código CREATE PROCEDURE usp_BuscarEmpleado @CodEmp int = 0-- Valor inicial será CERO AS IF Exists ( SELECT cod_empleado FROM empleado WHERE cod_empleado = @CodEmp) Begin SELECT [Apellidos y Nombres] = Apellidos + ', ' + Nombres ,Telefono = Tfno_Particular , Edad = (datediff(month,Fecha_Nacimiento,GetDate()))/12 , Obs = CASE WHEN (datediff(month,Fecha_Nacimiento,GetDate()))/12 < 18
  • 3. Universidad Nacional Jorge Basadre Grohmann /FACI Escuela Académico Profesional de Ingeniería en Informática y Sistemas Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007 Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 3/7 Ing. Edwin Ramos Velásquez THEN 'Es menor de edad' WHEN (datediff(month,Fecha_Nacimiento,GetDate()))/12 < 25 THEN 'Empleado Joven' ELSE 'Empleado Adulto' END FROM empleado WHERE cod_empleado = @CodEmp End ELSE Begin PRINT 'No existe el empleado con el codigo indicado..:'+Str(@CodEmp) RETURN -1 /*Devolver codigo de estado */ End RETURN 0 1.17. Compilación del procedimiento: Seleccionar todo el procedimiento y luego pulse la tecla F5 para compilar y almacenarlo en el servidor de base de datos. 1.18. Si existen errores en la compilación, corrige estos errores con la ayuda del profesor. 1.19. Ejecución del procedimiento: Ahora debe probar si funciona correctamente, ejecutando lo siguiente EXEC usp_BuscarEmpleado 7 1.20. Resultado: Apellidos y Nombres Telefono Edad Obs -------------------------------- ------------------ King, Robert 715555598 44 Empleado Adulto (1 filas afectadas) 1.21. Ahora responda las siguientes preguntas: Consulte a su profesor en caso que tenga dudas. 1.21.1. ¿Cuántos parámetros tiene el procedimiento y de que tipo de datos es? 1.21.2. ¿Qué cláusulas SQL usamos? 1.21.3. ¿Qué operadores usamos? 1.21.4. ¿Cuántas columnas son físicas y cuantas columnas son calculadas? 1.21.5. ¿Qué realiza RETURN y PRINT? 1.21.6. ¿Para que sirve CASE? 1.21.7. ¿En qué parte del procedimiento existen comentarios?
  • 4. Universidad Nacional Jorge Basadre Grohmann /FACI Escuela Académico Profesional de Ingeniería en Informática y Sistemas Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007 Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 4/7 Ing. Edwin Ramos Velásquez 1.21.8. ¿Qué permite BEGIN y END? 1.22. Ahora abrir ó seleccionar la otra ventana del analizador de consultas donde esta conectado el usuario02 (Usuario limitado) 1.23. Intente ejecutar el procedimiento almacenado con el comando: EXEC usp_BuscarEmpleado 7 1.24. Intente ejecutar el procedimiento almacenado con el comando: ¿Puede ejecutar el procedimiento almacenado? ¿Qué tiene que realizar para que pueda ejecutarlo? 2.3. Ejemplo3. Realice un procedimiento que permita devolver una listado de Clientes que pidieron un determinado producto y en el mes indicado por el usuario (Transferir estos datos como parámetros). Se debe obtener: Código del Cliente, Nombre del cliente, Fecha de pedido y la Precio unitario. El resultado debe estar ordenado por la fecha de pedido. a) Creación del Procedimiento: Tipear el siguiente código CREATE PROCEDURE dbo.usp_PedidoClienteProducto @CodProd int, @Mes int = 1 AS SELECT Pedido.Cod_Cliente, Cliente.Nombre_cliente, Pedido.Fecha_Pedido, Detalle_pedido.Precio_por_unidad FROM Pedido INNER JOIN Cliente ON Pedido.Cod_cliente = Cliente.cod_cliente INNER JOIN Detalle_Pedido ON Pedido.Id_pedido = Detalle_pedido.Id_pedido WHERE Detalle_Pedido.cod_producto = @CodProd AND Month(Pedido.Fecha_pedido) = @Mes ORDER BY Pedido.Fecha_pedido RETURN 0 b) Compilación del procedimiento: Seleccionar todo el procedimiento y luego pulse la tecla F5 para compilar y almacenarlo en el servidor de base de datos. • Si existen errores, consulte a su profesor. c) Ejecución del procedimiento: Ahora debe probar si funciona correctamente, ejecutando lo siguiente • Ahora ejecútelo. Por ejemplo para el producto que tiene codigo "1101" y en el mes de Febrero
  • 5. Universidad Nacional Jorge Basadre Grohmann /FACI Escuela Académico Profesional de Ingeniería en Informática y Sistemas Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007 Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 5/7 Ing. Edwin Ramos Velásquez EXEC usp_PedidoClienteProducto 1101, 2 • RESULTADO: Cod_Cliente Nombre_cliente Fecha_Pedido Precio_por_unidad ----------- --------------------- -------------------------- ----------------- 30 Spokes for Folks 2002-02-19 00:00:00.000 14.5000 57 Tek Bikes 2002-02-22 00:00:00.000 14.5000 33 Fulcrum Cycles 2003-02-18 00:00:00.000 14.5000 58 Making Tracks 2003-02-18 00:00:00.000 14.5000 (4 filas afectadas) • Ahora ejecute el procedimiento de otra forma. ¿Explique el resultado? EXEC usp_PedidoClienteProducto 1101, DEFAULT d) Ahora responda las siguientes preguntas: Consulte a su profesor en caso que tenga dudas. • ¿Cuántos parámetros tiene el procedimiento y de que tipo de datos es? • ¿Cuántas columnas son físicas y cuantas columnas son calculadas? • ¿Qué permite DEFAULT?. e) Ahora abrir ó seleccionar la otra ventana del analizador de consultas donde esta conectado el usuario02 (Usuario limitado) • Intente ejecutar el procedimiento almacenado con el comando: • ¿Puede ejecutar el procedimiento almacenado? ¿Qué tiene que realizar para que pueda ejecutarlo? 2.4. Ejemplo4. Crear un procedimiento almacenado similar al ejemplo2, pero ahora la información se debe retornar por parámetros OUTPUT. a) Creación del Procedimiento: Tipear el siguiente código CREATE PROCEDURE dbo.usp_BuscarEmpleado2 @CodEmp int = 0, @ApeNom varchar(40) OUTPUT, @TelEmp Varchar(10) OUTPUT, @EdadEmp Numeric(2) OUTPUT, @ObsEdad varchar(25) OUTPUT AS IF Exists ( SELECT cod_empleado FROM empleado WHERE cod_empleado = @CodEmp) Begin SELECT @ApeNom = Apellidos + ', ' + Nombres , @TelEmp = Tfno_Particular , @EdadEmp = Year(GetDate()) - Year(Fecha_Nacimiento) ,
  • 6. Universidad Nacional Jorge Basadre Grohmann /FACI Escuela Académico Profesional de Ingeniería en Informática y Sistemas Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007 Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 6/7 Ing. Edwin Ramos Velásquez @ObsEdad = CASE WHEN Year(GetDate()) - Year(Fecha_Nacimiento) < 18 THEN 'Es menor de edad' WHEN Year(GetDate()) - Year(Fecha_Nacimiento) < 25 THEN 'Empleado Joven' ELSE 'Empleado Adulto' END FROM empleado WHERE cod_empleado = @CodEmp End ELSE Begin PRINT 'No existe el empleado con el codigo indicado..:'+Str(@CodEmp) RETURN -1 /*Devolver codigo de estado */ End RETURN 0 b) Compilación del procedimiento: Seleccionar todo el procedimiento y luego pulse la tecla F5 para compilar y almacenarlo en el servidor de base de datos. • Si existen errores, consulte a su profesor. c) Ejecución del procedimiento: Ahora debe probar si funciona correctamente, ejecutando lo siguiente • Ahora ejecútelo. DECLARE @ApeNom Varchar(40), @Tel Varchar(10) DECLARE @Edad Numeric(2), @Obs Varchar(25) EXEC usp_BuscarEmpleado2 7, @ApeNom OUTPUT, @Tel OUTPUT, @Edad OUTPUT, @Obs OUTPUT Select @ApeNom as [Apellidos y Nombres], @Tel as Telefono, @Edad as Edad, @Obs as Observ • RESULTADO: Apellidos y Nombres Telefono Edad Observ ---------------------------------------- ------ King, Robert 715555598 44 Empleado Adulto (1 filas afectadas) d) Ahora responda las siguientes preguntas: Consulte a su profesor en caso que tenga dudas. • ¿Dónde se almacenan los Procedimientos Almacenados y donde los procedimientos temporales? • ¿Cómo puede modificar un procedimiento desde el Administrador corporativo?
  • 7. Universidad Nacional Jorge Basadre Grohmann /FACI Escuela Académico Profesional de Ingeniería en Informática y Sistemas Curso: Bases de Datos y Sistemas Distribuidos Año :IIIPeriodo Académico: 2007 Prof: Ing. Edgar Taya Acosta-http://www.edgartaya.net - etaya@unjbg.edu.pe Pág. 7/7 Ing. Edwin Ramos Velásquez • ¿Cuántos parámetros tiene el procedimiento y de que tipo de datos es? • ¿Qué permite DECLARE?. e) Ahora abrir ó seleccionar la otra ventana del analizador de consultas donde esta conectado el usuario02 (Usuario limitado) • Intente ejecutar el procedimiento almacenado con el comando: • ¿Puede ejecutar el procedimiento almacenado? ¿Qué tiene que realizar para que pueda ejecutarlo? 2.5. Ejercicios para ser realizado por el alumno, con el apoyo del Profesor:. a) Realice un procedimiento que permita mostrar los Productos solicitados por un determinado Cliente, solo se debe mostrar los productos donde la cantidad de pedido es menor a 3: Se debe obtener Código del producto, Fecha de pedido, Nombre del producto, precio unitario, Cantidad pedida. b) Realice un procedimiento que muestre el total de clientes que piden cada producto en un determinado trimestre. Si el total de clientes de un producto es menor a 5 se debe mostrar en una columna de Observaciones el texto "Pocos Clientes", en otro caso esta columna debe mostrar "Muchos clientes" Sugerencia: puede usar Tablas Temporales o Físicas en la consulta. Consulte al profesor para más información. c) Crear un procedimiento que permita agregar un nuevo registro en la tabla Pedido. Los nuevos datos se deben transferir como parámetros. Se debe verificar si ocurrieron errores, es decir, debe comprobar si los campos de tipo FK tienen un valor valido para cumplir con la integridad referencial. III.- Información Adicional 3.1 Que realiza los siguientes comandos (Ejecutar con el usuario01) GRANT INSERT, UPDATE, DELETE ON Cliente TO Edgar02, Elvis02, Walter02 GO GRANT CREATE PROCEDURE TO Edgar02 3.2 Que realiza la siguiente siguiente comando (Ejecutar con el usuario01) GRANT EXEC ON dbo.usp_BuscarEmpleado TO Edgar02