Está en la página 1de 2

1)Crear el SP que permita insertar datos en la tabla Pedidos.

Solucion:

CREATE PROCEDURE insertarpedido (NumeroPedido int, NumeroCliente varchar(5),


NumeroEmpleado INT, FechaDelPedido date, FechaDeEntrega date, FechaDeEnvio date,
NumeroTrasporte int, Cargo float, Destinatarios varchar(80), Direccion varchar(120), Cuidad
varchar(30), Region varchar(30), Codigo varchar(20), Pais varchar(30)) INSERT INTO pedido values
(NumeroPedido, NumeroCliente, NumeroEmpleado, FechaDelPedido, FechaDeEntrega,
FechaDeEnvio, NumeroTrasporte, Cargo, Destinatarios, Direccion, Cuidad, Region, Codigo, Pais)

2. Crear el SP que permita modificar el precio de un producto, debe recibir el código del producto
y el nuevo precio, tenga en cuenta que el nuevo precio no debe aumentarse o disminuirse más del
5% del precio actual del producto.

Solucion
DELIMITER $$
CREATE PROCEDURE editarprecio(id_producto int, nuevoprecio float) UPDATE producto SET
preciounidad = nuevoprecio WHERE idproducto =id_producto AND nuevoprecio BETWEEN
preciounidad-(preciounidad*0.5) AND preciounidad+(preciounidad*0.5)
$$

3. Crear un SP que permita suspender los productos, debe recibir el código del producto, tenga en
cuenta que solo debe permitir suspender el producto cuando las unidades en pedido sean 0.

Solucion

CREATE PROCEDURE bloquearproducto (id_producto int) UPDATE producto SET suspendido = 1


WHERE idproducto = id_producto AND unidadesenexistencia = 0;

4. El gerente de recursos humanos debe tener disponible la información de cuáles de sus


empleados ya están pensionados, esto quiere decir que ya cumplieron 60 años, en el
procedimiento almacenado, en sql server utilice la siguiente sintaxis para hallar la edad. Para otro
servidor consulte las funciones que realicen los mismos cálculos con fechas.Elabore un
procedimiento que le permita al gerente visualizar el nombre completo del empleado y el tiempo
de pensionado que lleva cada uno.

Solucion

CREATE VIEW AñoPension(idempleado, nombre, apellidos, fechanacimiento, fechacontratacion,


añospensionado) AS SELECT idempleado, nombre, apellidos, fechanacimiento, fechacontratación,
(TIMESTAMPDIFF(year,fechanacimiento,curdate())-60) AS años_pensionado FROM empleado;

SELECT * FROM `añopension`


5. El área de recursos humanos debe pasar el reporte anual de cuáles de sus empleados están
próximos a pensionarse, este reporte muestra el nombre completo del empleado, los años de
servicio que lleva y el número de años que falta para pensionarse,  El procedimiento debe mostrar,
únicamente, aquellos que tengan entre 55 y 59 años de edad y al menos 17 años de servicio.

Solucion

CREATE PROCEDURE calcularpensiondos(id_empleado int) SELECT nombre, apellidos,


cambiarsigno(añospensionado) AS años_faltantes FROM añospension WHERE idempleado =
id_empleado and TIMESTAMPDIFF(year,fechanacimiento,curdate()) between 55 and 59 and
timestampdiff(year,fechacontratacion,curdate()) >= 17;

6. Elabore un procedimiento almacenado que le permita al área de compras, generar un reporte


diario con los datos de los productos que deben pedir; para ello quieren visualizar el nombre del
producto, precio unitario, el precio promedio en ventas y la diferencia entre el precio unitario y el
precio promedio en ventas, todo esto siempre y cuando el producto no se encuentre
descontinuado (suspendido no debe ser igual a 1). 

Solucion

DELIMITER $$

CREATE PROCEDURE reportedia select p.IdProducto, p.NombreProducto,


p.PrecioUnidad,sum(d.PrecioUnidad d.Cantidad) as Cargo, sum(d.PrecioUnidad.Cantidad)
p.PrecioUnidad as Diferencia from producto p inner join detalles_de_pedido d on p.IdProducto =
d.IdProducto where p.Suspendido=0 and (p.UnidadesEnExistencia< p.NivelNuevoPedido or
(p.UnidadesEnExistencia=0 and p.NivelNuevoPedido=0))

group by IdProducto;

$$

También podría gustarte