Dentre os desafios, notou-se algumas necessidade e sua tarefa e solucionar essas demandas:
- gerenciar erros por identificadores de hospedagem duplicados.
- substituir as datas de início e término por uma data de início mais a duração, com a data final sendo calculada pela procedure.
- determinar o custo total pela multiplicação do número de dias pelo preço unitário.
USE `insight_places`;
DROP procedure IF EXISTS `insight_places`.`novoAluguel_6_Exercises`;
DELIMITER $$
USE `insight_places`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `novoAluguel_6_Exercises`
(vAluguel VARCHAR(10), vCliente VARCHAR(10), vHospedagem VARCHAR(10), vDataInicio DATE, vDataFinal DATE, vPrecoUnitario DECIMAL(10,2))
BEGIN
DECLARE vDias INTEGER DEFAULT 0;
DECLARE vPrecoTotal DECIMAL (10,2);
DECLARE vMensagem VARCHAR (100);
DECLARE EXIT HANDLER FOR 1062
BEGIN
SET vMensagem = 'Entrada duplicada de Chave Primaria';
SELECT vMensagem;
END;
SET vDias = (SELECT datediff(vDataFinal, vDataInicio));
SET vPrecoTotal = vDias * vPrecoUnitario;
INSERT INTO alugueis VALUES (vAluguel, vCliente, vHospedagem, vDataInicio, vDataFinal, vPrecoTotal);
SET vMensagem = 'Aluguel incluido na base com sucesso!';
SELECT vMensagem;
END$$
DELIMITER ;