Está en la página 1de 20

GUIA 2 Tema: Consultas avanzadas OBJETIVOS Realizar Consultas avanzadas: Subconsultas, columnas calculadas.

. Uso de Funciones Agregadas lenguaje SQL (COUNT, SUM, MAX, MIN, AVG). Clusulas, predicados y Operadores SQL. Combinacin de mltiples tablas (INNER JOIN, OUTER JOIN), Tipos de Combinacin de tablas (Combinacin Interna y/o Externa) y las diferencias entre las sintaxis del lenguaje SQL89 y SQL-92. UNION de tablas. Vistas. I. Fundamento Terico: Busque en la ayuda de Transact-SQL en Libros en Pantalla de SQL Server los comandos que se usarn en la presente prctica.

II.- Prctica Dirigida: Inicializar la Computadora con el sistema operativo Microsoft Windows XP. Iniciar sesin con el usuario BDNNN. (Donde NNN es nro. de Computadora) Luego cargar el Administrador corporativo de SQL Server. Realizar la conexin al servidor usando el inicio de sesin del usuario 01 creado en la prctica1. (Recuerde ya no debe usar SA, el profesor del curso usar este inicio de sesin SA y tendr una clave de acceso) 2.1. Creacin de Consultas en el Analizador de Consultas Seleccionar su base datos y ubcate en la seccin tablas. Ahora ir al men Herramientas Analizador de Consultas. Usted debe conectarse con el usuario02. Ahora realizar las siguientes consultas. Nota: No se olvide de guardar las consultas (Comando SQL y el resultado) a) Ejemplo1: Realice una consulta que muestre los pedidos en el ao 2002, en los meses de enero, febrero y diciembre, de todos los clientes de la ciudad de Madison Kingston de los Estados Unidos, donde el monto del pedido sea mayor a $1,000 y el cliente tenga una direccin conocida. La informacin a mostrar es: Nro de pedido, fecha de pedido, Monto de Pedido. Esta informacin debe estar ordenada por fecha de pedido y el monto de pedido. Para esta consulta Usted solo debe usar Subconsultas. b) La codificacin ser de la siguiente manera:
SELECT Nro_Pedido, Fecha_pedido, Monto_pedido FROM Pedido WHERE (YEAR(Fecha_pedido) = 2002) AND (MONTH(Fecha_pedido) IN (1, 2, 12)) AND (Monto_pedido > 1000) AND (Cod_cliente IN (SELECT cod_cliente FROM cliente WHERE Ciudad = 'Madison' OR Ciudad = 'Kingston' AND Direccion_1 IS NOT NULL)) ORDER BY Fecha_pedido, Monto_pedido

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior (Marcar bloque) y luego pulsar la tecla F5. El resultado obtenido ser:

d) Ahora responda las siguientes preguntas: Consulte a su profesor en caso que tenga dudas. Qu funciones usamos para la consulta, y que permite estas funciones? Year: Devuelve un entero que representa la parte del ao de la date especificada. Month: Devuelve un entero que representa el mes de date especificado. Qu clusulas SQL usamos? La clusula SELECT se usa para listar los atributos que se desean en el resultado de una consulta. La clusula FROM lista las relaciones que se van a examinar en la evaluacin de la expresin La clusula WHERE costa de un predicado que implica atributos de las relaciones que aparecen en la clusula FROM.

2.2. Creacin de Consultas usando combinacin interna de tablas. a) Ejemplo2: Modificar la consulta del Ejemplo1 (las condiciones de filtro son las mismas), para que ahora muestre la siguiente informacin: Nro de pedido, nombre del cliente, fecha de pedido (solo mostrar el da y el mes), Nombre producto, Cantidad, precio y el Importe. Esta informacin debe estar ordenada por fecha de pedido y el importe. Para esta consulta puede usar combinacin interna de tablas y opcionalmente Subconsultas si es necesario (Usar sintaxis ANSI SQL-92). b) La codificacin ser de la siguiente manera: (Tipear a continuacin del resultado del ejemplo1)
SELECT P.Nro_Pedido, C.Nombre_cliente, Fecha=CAST(DAY(P.Fecha_pedido) as varchar(2))+''+CONVERT(varchar(2),MONTH(P.Fecha_pedido)), PR.Nombre_producto, DP.Cantidad, DP.Precio_por_unidad, Importe = DP.Cantidad * DP.Precio_por_unidad FROM Pedido P

INNER JOIN Cliente C ON P.Cod_cliente = C.Cod_cliente INNER JOIN Detalle_pedido DP ON P.Id_pedido = DP.Id_Pedido INNER JOIN Producto PR ON DP.Cod_producto = PR.Cod_producto WHERE (YEAR(P.Fecha_pedido) = 2002) AND (MONTH(P.Fecha_pedido) IN (1, 2, 12)) AND (P.Monto_pedido > 1000) AND (C.Ciudad = 'Madison' OR C.Ciudad = 'Kingston' AND C.Direccion_1 IS NOT NULL) ORDER BY P.Fecha_pedido, Importe

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior (Marcar bloque) y luego pulsar la tecla F5. El resultado obtenido ser:

2.3. Creacin de Consultas usando combinacin Externa de tablas. a) Ejemplo3: Realice una consulta que muestre todos los empleados de la empresa, que no recibieron pedidos. La informacin que debe retornar es la siguiente: Cdigo de empleado, Apellidos, Nombres y Cargo. (Usar sintaxis ANSI SQL-92). b) La codificacin ser de la siguiente manera: Opcion1: Usando subconsultas
Select E.Cod_empleado, E.Apellidos, E.Nombres, E.Cargo FROM Empleado E where cod_empleado not in (Select distinct cod_empleado from pedido )

Opcion2: Usando combinacin externa


Select E.Cod_empleado, E.Apellidos, E.Nombres, E.Cargo from empleado E LEFT OUTER JOIN Pedido P ON E.Cod_empleado = P.Cod_Empleado WHERE P.Id_Pedido IS NULL

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior (Marcar bloque) y luego pulsar la tecla F5. El resultado obtenido ser:

2.4. Creacin de Consultas usando combinacin de tablas y funciones agregadas. a) Ejemplo4: Realice una consulta que muestre el nmero total de pedidos que recibieron los empleados de la empresa, y debe incluir tambin los empleados que no recibieron ningn solo pedido. La informacin que debe retornar es la siguiente: Nombre del Empleado, Cargo y Total pedidos recibidos. Esta informacin debe estar ordenada por Total Pedidos recibidos en forma Descendente. Para esta consulta puede usar combinacin interna y/o externa de tablas (Usar sintaxis ANSI SQL-92). b) La codificacin ser de la siguiente manera: Opcion1:
SELECT E.Nombres, E.Cargo, Total = Count(*) FROM Pedido P INNER JOIN Empleado E ON P.Cod_empleado = E.Cod_empleado GROUP BY E.Nombres, E.Cargo ORDER BY 2 DESC

RESULTADO:

Opcion2:
SELECT E.Nombres, E.Cargo, Total = Count(*) FROM Pedido P RIGHT OUTER JOIN Empleado E ON P.Cod_empleado = E.Cod_empleado GROUP BY E.Nombres, E.Cargo ORDER BY Total DESC

RESULTADO:

Opcion3:
SELECT E.Nombres, E.Cargo, Total = Count(P.Cod_Empleado) FROM Pedido P RIGHT OUTER JOIN Empleado E ON P.Cod_empleado = E.Cod_empleado GROUP BY E.Nombres, E.Cargo ORDER BY Total desc

RESULTADO:

Advertencia: valor NULL eliminado por el agregado u otra operacin SET.

2.5. Creacin de Consultas usando mltiples combinaciones externas de tablas . a) Ejemplo5: Realice una consulta que muestre todos los empleados de la empresa, que recibieron pedidos y debe incluir tambin los empleado no recibieron ningn solo pedido. La informacin que debe retornar es la siguiente: Nro de pedido, nombre del Empleado, Estado del envo del pedido, Nombre producto. (Usar sintaxis ANSI SQL-92). b) La codificacin ser de la siguiente manera:
SELECT P.Nro_Pedido, E.Nombres, P.Enviado, PR.Nombre_producto FROM Pedido P RIGHT OUTER JOIN Empleado E ON P.Cod_empleado = E.Cod_empleado LEFT OUTER JOIN Detalle_pedido DP ON P.Id_pedido = DP.Id_Pedido LEFT OUTER JOIN Producto PR ON DP.Cod_producto = PR.Cod_producto

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior y luego pulsar la tecla F5. El resultado obtenido ser:

2.6. Creacin de Consultas usando funciones agregadas SUM, MAX, MIN, AVG. a) Ejemplo6: Realice una consulta que muestre el promedio de montos de pedidos en cada uno de los meses del ao 2003. La informacin a mostrar es Nombre del mes, Promedio. La informacin debe estar ordenado por mes (Desde enero a diciembre). b) La codificacin ser de la siguiente manera:
Select NroMes =DatePart(MM,Fecha_pedido), NombreMes =DATENAME(month,Fecha_pedido), Promedio = AVG(Monto_pedido) From Pedido Where Year(Fecha_pedido)=2003 Group By DATENAME(month,Fecha_pedido), DatePart(MM,Fecha_pedido) --HAVING AVG(Monto_pedido) > 1800 Order by DatePart(MM,Fecha_pedido)

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior y luego pulsar la tecla F5. El resultado obtenido ser:

d) Ahora responda las siguientes preguntas: Consulte a su profesor en caso que tenga dudas. Cmo sera una consulta que muestre el monto de pedido mximo y mnimo de cada mes en el ao 2003?
Select NroMes =DatePart(MM,Fecha_pedido), NombreMes =DATENAME(month,Fecha_pedido), Max_monto = MAX(Monto_pedido), Min_monto = MIN(Monto_pedido) From Pedido Group By DATENAME(month,Fecha_pedido), DatePart(MM,Fecha_pedido) Order by DatePart(MM,Fecha_pedido)

e) A partir del siguiente resultado, Cul sera la consulta? (La consulta se debe aplicar a pedidos de todos los aos)

2.7. Tipos especiales de combinacin de tablas (SELF JOIN).


Empleado Cod_empleado: int IDENTITY(1,1) Apellidos: varchar(20) NOT NULL Nombres: varchar(10) NOT NULL Cargo: varchar(30) NULL Fecha_nacimiento: datetime NULL Fecha_contratacion: datetime NULL Tfno_particular: varchar(20) NULL Extension: varchar(4) NULL Foto: image NULL Notas: text NULL Reporta_a: int NULL (FK) Sueldo: money NULL Nro_SS: varchar(12) NULL AFP: varchar(25) NULL Direccion: char(45) NULL FKReporta_a

Figura 1

a) Ejemplo7: Segn la figura 1 un Empleado depende de otro empleado (Reporta a). Por lo tanto, realice una consulta que muestre Los empleados y los correspondientes Jefes a cuales Reporta las actividades realizadas. La informacin a mostrar es Nombre del Jefe, Cargo Jefe, Nombre del empleado y cargo del empleado b) La codificacin ser de la siguiente manera:
Select Jefe.Nombres AS Nombre_Jefe, Jefe.Cargo AS Cargo_jefe, E.Nombres, E.Cargo FROM Empleado E INNER JOIN Empleado Jefe ON Jefe.Cod_empleado = E.Reporta_A

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior y luego pulsar la tecla F5. El resultado obtenido ser:

2.8. Combinacin de Tablas, SubConsultas y Funciones Agregadas

Producto Cod_producto: int Detalle_pedido ID_pedido: int Cod_producto: int Precio_por_unidad: money Cantidad: int Nombre_producto: varchar(50) Color: varchar(20) Tamao: varchar(10) Publico_objetivo: varchar(10) Precio: money Cod_proveedor: int Cod_Tipo_Producto: int Clase_producto: varchar(50) Tipo_producto Cod_Tipo_Producto: int Nombre_tipo_producto: varchar(50) Descripcion: text Imagen: image

Figura 2 a) Ejemplo8: El gerente de Ventas STEVEN esta en uno de sus das de malas, y ha prometido a despedir al primer empleado que no sea eficiente en su trabajo, y justo en este momento ve a XAVIER (Asociado de marketing) y para hacerle sudar la gota gorda le encarga obtener la siguiente informacin: Obtener el nombre del tipo de producto que genera mayores porcentajes de ingresos a la empresa segn los pedidos recibidos. Xavier como buen marketero no sabe nada de computacin y para no perder su trabajo busca a un amigo que le resuelva el problema, y justamente TU eres el amigo que busca. Podrs ayudarle? b) La siguiente codificacin ser correcto y talvez sea lo que necesitas?: (Para ayudarte vea la figura 2)
SELECT tp.Nombre_tipo_producto, SUM(DP.Cantidad * DP.Precio_por_unidad ) AS TotalMontoPedido, CAST(SUM(DP.Cantidad * DP.Precio_por_unidad) / (Select SUM(DP2.Cantidad * DP2.Precio_por_unidad) From Detalle_pedido DP2 ) * 100 as DECIMAL(6,2)) AS PorcentageDelTotalPedidos FROM Detalle_pedido DP JOIN Producto PR ON DP.Cod_producto = PR.Cod_producto JOIN Tipo_Producto TP ON PR.Cod_tipo_producto = TP.Cod_tipo_producto GROUP BY tp.Nombre_tipo_producto ORDER BY 3 DESC

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior y luego pulsar la tecla F5. El resultado ser:

2.9. Unin de Tablas a) Ejemplo9: Obtener los 3 pedidos ms antiguos y los 2 ltimos pedidos. Ordenar por fecha de pedido el resultado final. b) La codificacin ser de la siguiente manera:
SET NOCOUNT ON Select top 3 ID_pedido, Nro_Pedido, Fecha_pedido, Cod_cliente, Monto_pedido Into #Pedidos1 From Pedido Order By Fecha_pedido ASC Select top 2 ID_pedido, Nro_Pedido, Fecha_pedido, Cod_cliente, Monto_pedido Into #Pedidos2 From Pedido Order By Fecha_pedido DESC -SET NOCOUNT OFF Select * From #Pedidos1 Union ALL Select * From #Pedidos2 Order By #Pedidos1.Fecha_pedido ASC DROP TABLE #Pedidos1 DROP TABLE #Pedidos2

c) Ahora para ejecutar la consulta. Seleccionar toda la instruccin anterior y luego pulsar la tecla F5. El resultado obtenido ser:

2.10. Por ltimo guardar todo y finalizamos la presente prctica. Informacin Adicional Que realiza la siguiente consulta
Select NroMes =DatePart(MM,Fecha_pedido), NombreMes =DATENAME(month,Fecha_pedido), Max_monto_pedido = MAX(Monto_pedido), Min_monto_pedido = MIN(Monto_pedido) From Pedido Where DatePart(yy, Fecha_pedido)=2003 Group By DATENAME(month,Fecha_pedido), DatePart(MM,Fecha_pedido) Order by DatePart(MM,Fecha_pedido)

Resultado

Que realiza la siguiente consulta


SELECT NombreMes=DATENAME(month,P.Fecha_pedido), SUM(DP.Cantidad * DP.Precio_por_unidad ) AS TotalMontoPedido, CAST(SUM(DP.Cantidad * DP.Precio_por_unidad) / (Select SUM(DP2.Cantidad * DP2.Precio_por_unidad) From Detalle_pedido DP2 ) * 100 as DECIMAL(6,2)) AS PorcentageDelTotalPedidos FROM Detalle_pedido DP JOIN Producto PR ON DP.Cod_producto = PR.Cod_producto JOIN Tipo_Producto TP ON PR.Cod_tipo_producto = TP.Cod_tipo_producto JOIN Pedido P ON DP.Id_pedido = P.Id_pedido WHERE tp.Nombre_tipo_producto = 'Competicin' GROUP BY DATENAME(month,P.Fecha_pedido) ORDER BY 3 DESC

Resultado

GUIA 3 Tema: Procedimientos Almacenados OBJET1VOS Programacin de lenguaje SQL con Procedimientos almacenados: Creacin, Modificacin, Eliminacin, Permisos. Ejecucin. Parmetros (Input/Output). Tipo de datos. Declaracin de Variables. Variables locales y globales. Control de Flujo de programa. Actualizacin de datos de una tabla mediante comandos DML dentro de un procedimiento almacenado. Control de errores. Gestin de Objetos Temporales.

I. Fundamento Terico: Busque en la ayuda de Transact-SQL 6 en Libras en Pantalla de SQL Server los comandos que se usaran en la presente prctica.

II. Practica Dirigida: Procedimiento almacenados en SQL Server 2000 Inicializar la PC con Windows. Iniciar sesin con el usuario BDNNN. Luego cargar el Administrador corporativo de SQL Server. Realizar la conexin al servidor usando el inicio de sesin del usuario 01 creado en la prctica. (Recuerde ya no debe usar SA, el profesor del curso usara este inicio de sesin SA y tendr una clave de acceso).

2.1. Ejemplo 1: Realice un procedimiento, que permita buscar Proveedores de un determinado Pas. La informacin a obtener es: nombre del proveedor, ciudad, telfono y cdigo postal. El nombre del pas es indicado por el usuario. En el administrador Corporativo, seleccionar su base datos y ubcate en la seccin Procedimientos Almacenados. Ahora ir al men Herramientas - Analizador de Consultas. Usted debe conectarse con el usuarioOl para que pueda crear el procedimiento almacenado. Verificar que est conectado a su base de datos correspondiente: Nota: No se olvide de guardar el cdigo del procedimiento y el resultado en su disco de trabajo.

a) Creacin del Procedimiento: Tapear el siguiente cdigo.


CREATE PROCEDURE dbo.usp_BuscarProveedorPorPais @Pais varchar(40) AS SELECT Nombre,Ciudad,Telefono,Codigo_Postal FROM Proveedor WHERE Pais=@Pais if @@RowCount = 0 begin PRINT 'No existe proveedores en este pais' RETURN -1 End RETURN 0

b) Compilacin 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 en la compilacin, corrige estos errores con la ayuda del profesor. En caso de que vea el mensaje de error: "Permiso CREATE PROCEDURE denegado en la base de datos TiendaComeii20'." Consulte a tu profesor sobre cmo puede otorgar permisos al UsuarioOl para que pueda CREAR 6 MODIFICAR procedimientos.

Nota: Si desea modificar el procedimiento Usted puede usar el comando ALTER: (solo debes cambiar la palabra CREATE por ALTER en el paso A y volver a compilar el procedimiento) ALTER PROCEDURE dbo.usp_BuscarProveedorPorPais c) Ejecucin del procedimiento: Ahora debe probar si funciona correctamente, por ejemplo buscar los proveedores de "Japon".
EXEC usp_BuscarProveedorPorPais 'Japn'

RESULTADO:

d) Ahora responda las siguientes preguntas: Buscar los proveedores de los siguientes Pases?; Canad, EE.UU, Francia y Reino Unido.
EXEC usp_BuscarProveedorPorPais 'Canad'

EXEC usp_BuscarProveedorPorPais 'EE.UU.'

EXEC usp_BuscarProveedorPorPais 'Francia' EXEC usp_BuscarProveedorPorPais 'Reino Unido'

2.2. Ejemplo2: Crear un procedimiento, que permita buscar un determinado empleado por su codigo. El codigo se debe transferir como parametro INPUT del procedimiento. Si existe el codigo se debe mostrar la siguiente informacion: Apellidos y Nombres (en una sola columna), Telefono, Edad y Obs. En la columna Obs de debe mostrar segiin su edad si es "Menor de Edad" 6 "Empleado Joven" o "Empleado Adulto". En caso de que no exista se debe mostrar un mensaje apropiado. a) Creacin del Procedimiento: Tipear el siguiente codigo
CREATE PROCEDURE dbo.usp_BuscarEmpleado @CodEmp int = 0 AS IF Exists (SELECT cod_empleado FROM empleado WHERE cod_empleado = @CodEmp) Begin SELECT [Apellidos y Nombres] = Apellidos + ', ' + Nombres, Telefono = Tfno_Particular, Edad = Year(GetDate())-Year(Fecha_Nacimiento), Obs = 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 End RETURN 0

b) Compilacin 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 en la compilacion, corrige estos errores con la ayuda del profesor. c) Ejecucion del procedimiento: Ahora debe probar si funciona correctamente, ejecutando lo siguiente
EXEC usp_BuscarEmpleado 7

RESULTADO:

2.3. EjemploS. 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 parmetros). Se debe obtener: Codigo del Cliente, Nombre del cliente, Fecha de pedido y la Precio unitario. El resultado debe estar ordenado por la fecha de pedido. a) Creacin del Procedimiento: Tipear el siguiente cdigo.
CREATE PROCEDURE dbo.usp_PedidoClienteProducto @CodProd int,@Mes int = 1 AS SELECT Pedido.Cod_Cliente,Cliente.Nombre_Cliente,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) Compilacin 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) Ejecucin del procedimiento: Ahora debe probar si funciona correctamente, ejecutando lo siguiente Ahora ejectelo. Por ejemplo para el producto que tiene cdigo "1101" y en el mes de Febrero
EXEC usp_PedidoClienteProducto 1101,2

RESULTADO:

Ahora ejecute el procedimiento de otra forma. Explique el resultado? EXEC usp_PedidoClienteProducto 1101, DEFAULT
EXEC usp_PedidoClienteProducto 1101,DEFAULT

2.4. Ejemplo4. Crear un procedimiento almacenado similar al ejemplo2, pero ahora la informacin se debe retornar por parmetros OUTPUT. a) Creacin del Procedimiento: Tipear el siguiente codigo.
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), @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 End RETURN 0

b) Compilacion del procedimiento: Seleccionar todo el procedimiento y luego pulse la tecla F5 para compilar y almacenario en el servidor de base de datos.

Si existen errores, consulte a su profesor.

c) Ejecucion del procedimiento: Ahora debe probar si funciona correctamente, ejecutando lo siguiente. Ahora ejecutelo.

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:

2.5 Ejercicios para ser realizado por el alumno. 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 Cdigo 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 Fsicas en la consulta. Consulte al profesor para ms informacin. c) Crear un procedimiento que permita agregar un nuevo registro en la tabla Comprobante de Pago. Los nuevos datos se deben transferir como parmetros. 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. d) Crear un procedimiento que permita agregar un nuevo registro en la tabla Detalle de comprobante de pago. Los nuevos datos se deben transferir como parmetros. 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.

e) Crear un procedimiento que permita agregar un nuevo registro en la tabla Pedido. Los nuevos datos se deben transferir como parmetros. 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. f) Realizar un procedimiento que permita eliminar todas las facturas que no tienen su correspondiente detalle.

g) Realice un procedimiento almacenado que permita modificar los datos de un determinado tipo de producto. 2.6 Por ultimo guardar todo y finalizamos la presente prctica. Ahora puede hacer la Tarea encargada. Ill.-TAREA Encargada Buscar en la ayuda de SQL Server todo lo referente a: CREATE PROCEDURE Crea un procedimiento almacenado Transact-SQL o Common Language Runtime (CLR) en SQL Server 2008 R2. Los procedimientos almacenados son similares a los procedimientos de otros lenguajes de programacin en tanto que pueden: o o o Aceptar parmetros de entrada y devolver varios valores en forma de parmetros de salida al lote o al procedimiento que realiza la llamada. Contener instrucciones de programacin que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos. Devolver un valor de estado a un lote o a un procedimiento que realice una llamada para indicar si la operacin se ha realizado correctamente o se han producido errores, y el motivo de estos.

ALTER PROCEDURE Modifica un procedimiento creado anteriormente por la ejecucin de la instruccin CREATE PROCEDURE. ALTER PROCEDURE no cambia los permisos ni afecta a ningn procedimiento almacenado ni desencadenador dependientes. Sin embargo, la configuracin de la sesin actual para QUOTED_IDENTIFIER y ANSI_NULLS se incluye en el procedimiento almacenado cuando se modifica. Si la configuracin es distinta de la que se estaba aplicando cuando se cre originalmente el procedimiento almacenado, el comportamiento de este ltimo puede cambiar.

EXECUTE Ejecuta una cadena de comandos o una cadena de caracteres dentro de un proceso por lotes de Transact-SQL, o uno de los siguientes mdulos: procedimiento almacenado del sistema, procedimiento almacenado definido por el usuario, funcin con valores escalares definida por el usuario o procedimiento almacenado extendido.

DROP PROCEDURE Quita uno o ms procedimientos almacenados o grupos de procedimientos de la base de datos actual.

Parmetros Los parmetros se usan para intercambiar datos entre las funciones y los procedimientos almacenados y la aplicacin o la herramienta que llam a la funcin o al procedimiento almacenados: o o Los parmetros de entrada permiten a quien realiza la llamada pasar un valor de datos a la funcin o al procedimiento almacenado. Los parmetros de salida permiten al procedimiento almacenado devolver un valor de datos o variable de cursor a quien realiz la llamada. Las funciones definidas por el usuario no pueden especificar parmetros de salida. Cada procedimiento almacenado devuelve un cdigo de retorno de tipo entero a quien realiza la llamada. Si el procedimiento almacenado no establece explcitamente un valor para el cdigo de retorno, ste es 0.

También podría gustarte