Está en la página 1de 8

PROCEDIMIENTOS ALMACENADOS

1.- Este procedimiento tiene como objetivo listar cantidad de meses de vacaciones por
empleado según una determinada fecha.

CRITERIOS A EVALUAR:

 Por cada año de antigüedad que tenga cada empleado equivales a un mes de
vacaciones.
 El cálculo de los mese se realiza de acuerdo a la fecha de ingreso y la fecha a consultar

CARACTERISTICAS:

NOMBRE: SP_Vacaciones

PARAMETROS: Tiene un parámetro de entrada y 4 parámetros de salida

Entrada
 FECHA este parámetro es de tipo DATE

Salida

 EMPEADO es el nombre del empleado


 VACACIONES es la cantidad de meses de vacaciones
 FECHA DE INGRESO es la fecha de ingreso del empleado
 FECHA A CONSULTA es la fecha que ingresas como parámetros de
entrada.

FUNCIONES Y CONDICIONALES UTILIZADAS

 CONCAT
 IF

PROCEDIMIENTO

CREATE PROCEDURE SP_Vacaciones (IN FECHA date)

SELECT CONCAT(e.NomEmp,' ',e.ApeEmp) EMPLEADO, IF(DATEDIFF(FECHA,


e.FechaIngEmp)/30<23,'1 MES DE VACACIONES',IF(DATEDIFF(FECHA,
e.FechaIngEmp)/30<35,'2 MESES DE VACACIONES',IF(DATEDIFF(FECHA,
e.FechaIngEmp)/30<47,'3 MESES DE VACACIONES',IF(DATEDIFF(FECHA,
e.FechaIngEmp)/30<59,'4 MESES DE VACACIONES',IF(DATEDIFF(FECHA,
e.FechaIngEmp)/30<71,'5 MESES DE VACACIONES',IF(DATEDIFF(FECHA,
e.FechaIngEmp)/30<83,'6 MESES DE VACACIONES',IF(DATEDIFF(FECHA,
e.FechaIngEmp)/30<96,'7 MESES DE VACACIONES',IF(DATEDIFF(FECHA,
e.FechaIngEmp)/30<107,'8 MESES DE VACACIONES','SIN VACACIONES'))))))))
'VACACIONES',
e.FechaIngEmp 'FECHA DE INGRESO',
FECHA 'FECHA A CONSULTAR'
FROM empleado e;
EJECUCION DE PROCEDIMIENTO

CALL SP_VACACIONES('2012-01-01');

RESULTADO DE PROCEDIMIENTO

2.- Este procedimiento tiene como objetivo listar la provisión de gratificaciones para cada
empleado según el periodo ingresado.

CRITERIOS A EVALUAR:

 Calcular la gratificación en base al periodo ingresado y la fecha de ingreso del


empleado

CARACTERISTICAS:

NOMBRE: SP_ProvisionGratificacion

PARAMETROS: Tiene dos parámetros de entrada y 5 parámetros de salida

Entrada
 AÑO de tipo varchar con tamaño 4
 MES de tipo varchar con tamaño 2

Salida

 EMPEADO es el nombre del empleado


 SUELDO es la importe de remuneración mensual del empleado
 GRATIFICACION es el importe equivalente a los días trabajados por
el empleado
 MES DE INGRESO es el número de mes en el que ingreso el
empleado
 AÑO INGRESO es el año en que ingreso el empleado

FUNCIONES Y CONDICIONALES UTILIZADAS

 CONCAT
 FORMAT
 ROUND
 IF
PROCEDIMIENTO

CREATE PROCEDURE SP_ProvisionGratificacion (IN anio VARCHAR(4),in mes VARCHAR(2))

SELECT CONCAT(e.NomEmp,' ',e.ApeEmp) EMPLEADO,


FORMAT(e.sueldo,2) SUELDO,
FORMAT(ROUND(IF(YEAR(e.FechaIngEmp)=anio,if(mes<6,if(MONTH(e.FechaIngEmp)<6,
(e.sueldo/6)*(6-MONTH(e.FechaIngEmp)),e.sueldo),
if(MONTH(e.FechaIngEmp)>6,(e.sueldo/6)*(12-
MONTH(e.FechaIngEmp)),e.sueldo)),E.sueldo),2),2) GRATIFICACION,
MONTH(e.FechaIngEmp) 'MES INGRESO',
YEAR(e.FechaIngEmp) 'AÑO INGRESO'
FROM empleado e;

EJECUCION DE PROCEDIMIENTO

Se Calcula la primera gratificación del año 2013

CALL SP_ProvisionGratificacion('2013','6')

RESULTADO DE PROCEDIMIENTO

3.- Este procedimiento tiene como objetivo listar total de ventas que se han realizado por cada
producto en un determinado intervalo de fechas.

CRITERIOS A EVALUAR:

 Calcula la suma total de cada producto cuyos pedidos se encuentra dentro de los
intervalos de fechas ingresados por los parámetros.
 Se utiliza un GROUP BY para poder agrupar los productos y sacar su total de ventas.

CARACTERISTICAS:

NOMBRE: SP_VentasTotalesPorProducto
PARAMETROS: Tiene dos parámetro de entrada y dos parámetros de salida

Entrada
 FECHAINICIO este parámetro es de tipo DATE
 FECHAFIN este parámetro es de tipo DATE

Salida

 PRODUCTO es el nombre del producto


 TOTAL es el importe vendido.

FUNCIONES Y CONDICIONALES UTILIZADAS

 CONCAT
 FORMAT
 SUM
 GROUP BY

PROCEDIMIENTO

CREATE PROCEDURE SP_VentasTotalesPorProducto(IN fechaInicio date, IN fechaFin date)


SELECT p.Producto PRODUCTO,CONCAT('S/.',FORMAT(SUM(p.Precio*d.Cantidad),2)) TOTAL
FROM pedido pe JOIN detalle d ON d.NroPedido=pe.NroPedido
JOIN producto p ON p.CodProd=d.CodProd
WHERE pe.FechaPedido BETWEEN fechaInicio and fechaFin
GROUP BY p.Producto;

EJECUCION DE PROCEDIMIENTO

CALL SP_VentasTotalesPorProducto('2009-01-01','2010-01-01');

RESULTADO DE PROCEDIMIENTO
FUNCIONES
1. Esta función tiene como objetivo calcular el total de compras que ha realizado un
determinado cliente cuyas fechas de pedidos se encuentran en un determinado intervalo
de fechas.

CRITERIOS A EVALUAR:

 Calcular la suma total de todos los pedidos realizado por un determinado cliente.
 La búsqueda del cliente se realizara por su RUC
 Los pedidos se filtraran en un intervalo de fechas que esta como parámetros de
entrada.

CARACTERISTICAS:

NOMBRE: fn_ComprasPorCliente

PARAMETROS: Tiene 3 parámetro de entrada

Entrada
 FECHAINICIO este parámetro es de tipo DATE
 FECHAFIN este parámetro es de tipo DATE
 RUC este parámetro es de tipo VARCHAR(11)

Retorna

 Suma total de compras, esta suma se retorna en un tipo de dato


DOUBLE

FUNCIONES Y CONDICIONALES UTILIZADAS

 SUM

FUNCION

CREATE FUNCTION fn_ComprasPorCliente (ruc CHAR (11),fechaInicio date,fechaFin date)


RETURNS DOUBLE
BEGIN
SELECT
SUM(d.Cantidad * p.Precio)
INTO @total
FROM
cliente c
JOIN pedido pe ON c.RUC = pe.RUC
JOIN detalle d ON d.NroPedido = pe.NroPedido
JOIN producto p ON p.CodProd = d.CodProd
WHERE
pe.FechaPedido BETWEEN fechaInicio
AND fechaFin
AND c.RUC = ruc;
RETURN @total;
END;
EJECUCION DE FUNCION

En este ejemplo calcularemos las compras del cliente Juan Pérez cuyo Ruc es “10223344551”
entre Enero del 2009 y enero del 2013

SELECT CONCAT('S/.',FORMAT(fn_ComprasPorCliente('10223344551','2009-01-01','2013-01-
01'),2)) TOTAL;

RESULTADO DE LA FUNCION

2. Esta función tiene como objetivo calcular cantidad de productos vendidos de una
determinada categoría cuyas fechas de pedidos se encuentran en un determinado
intervalo de fechas.

CRITERIOS A EVALUAR:

 Calcular la cantidad total de productos vendidos de una determinada categoria.


 La búsqueda se realizara mediante código de categoría
 Los pedidos se filtraran en un intervalo de fechas que están como parámetros de
entrada.

CARACTERISTICAS:

NOMBRE: fn_CantidadProductosVendidoPorCategoria

PARAMETROS: Tiene 3 parámetro de entrada

Entrada
 FECHAINICIO este parámetro es de tipo DATE
 FECHAFIN este parámetro es de tipo DATE
 CODIGOCATEGORIA este parámetro es de tipo VARCHAR(3)

Retorna

 Cantidad total de productos vendidos este parámetro de salida es


de tipo INT

FUNCIONES Y CONDICIONALES UTILIZADAS

 COUNT

FUNCION

CREATE FUNCTION fn_CantidadProductosVendidoPorCategoria (codigoCategoria


CHAR(3),fechaInicio date,fechaFin date) RETURNS INT
BEGIN
SELECT
COUNT(*)
INTO @cantidadProducto
FROM pedido pe
JOIN detalle d ON pe.NroPedido=d.NroPedido
JOIN producto p ON p.CodProd = d.CodProd
WHERE
pe.FechaPedido BETWEEN fechaInicio
AND fechaFin
AND p.IdCategoria=codigoCategoria;
RETURN @cantidadProducto;
END;

EJECUCION DE FUNCION

En este ejemplo calcularemos la cantidad de productos vendidos de la categoría “Sonido”


cuyo código es “003”

SELECT fn_CantidadProductosVendidoPorCategoria('003','2009-01-01','2013-01-01')
CANTIDAD;

RESULTADO DE LA FUNCION

3.- Esta función tiene como objetivo calcular la cantidad de clientes que han comprado un
producto de una determinada categoría y cuyas compras están en un determinado intervalo
de fechas

CRITERIOS A EVALUAR:

 Calcular la cantidad de clientes que han comprado productos de una determinada


categoría.
 La búsqueda se realizara mediante código de categoría
 Las compras se filtraran en un intervalo de fechas que están como parámetros de
entrada.

CARACTERISTICAS:

NOMBRE: fn_CantidadClientesPorCategoria

PARAMETROS: Tiene 3 parámetro de entrada

Entrada
 FECHAINICIO este parámetro es de tipo DATE
 FECHAFIN este parámetro es de tipo DATE
 CODIGOCATEGORIA este parámetro es de tipo VARCHAR(3)

Retorna

 Cantidad total de productos vendidos este parámetro de salida es


de tipo INT

FUNCIONES Y CONDICIONALES UTILIZADAS


 COUNT
 DISTINCT esta función ayudar a eliminar los elementos repetidos de la consulta
en este caso eliminaremos los clientes repetidos ya que pueden haber cliente
que han realizado varias compras.

FUNCION

CREATE FUNCTION fn_CantidadClientesPorCategoria (codigoCategoria CHAR(3),fechaInicio


date,fechaFin date) RETURNS INT
BEGIN
SELECT
COUNT(DISTINCT c.RUC)
INTO @cantidadClientes
FROM
cliente c
JOIN pedido pe ON c.RUC = pe.RUC
JOIN detalle d ON d.NroPedido = pe.NroPedido
JOIN producto p ON p.CodProd = d.CodProd
WHERE
p.IdCategoria = codigoCategoria
AND pe.FechaPedido BETWEEN fechaInicio
AND fechaFin;
RETURN @cantidadClientes;
END;

EJECUCION DE FUNCION

En este ejemplo calcularemos la cantidad de clientes que han comprado productos de la


categoría “Sonido” cuyo código es “003”

SELECT fn_CantidadClientesPorCategoria('003','2009-01-01','2013-01-01') CANTIDAD;

RESULTADO DE LA FUNCION

También podría gustarte