USE `insightplaces`;
DROP procedure IF EXISTS `insightplaces`.`novoAluguel_32`;
DELIMITER $$
USE `insightplaces`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `novoAluguel_32`
(vAluguel VARCHAR(10), vClienteNome VARCHAR(150), vHospedagem VARCHAR(10), vDataInicio DATE, vDataFinal DATE, vPrecoUnitario DECIMAL(10,2))
BEGIN
DECLARE vCliente VARCHAR;
DECLARE vDias INTEGER DEFAULT 0;
DECLARE vNumCliente INTEGER;
DECLARE vPrecoTotal DECIMAL(10,2);
DECLARE vMensagem VARCHAR(100);
DECLARE EXIT HANDLER FOR 1452
BEGIN
SET vMensagem = 'Problema de chave estrangeira associado a alguma entidade da base.';
SELECT vMensagem;
END;
SET vNumCliente = (SELECT COUNT(*) FROM clientes WHERE nome = vClienteNome);
IF vNumCliente > 1 THEN
SET vMensagem = 'Este cliente não pode ser usado para incluir o aluguel pelo nome.';
SELECT vMensagem;
ELSE
SET vDias = (SELECT DATEDIFF (vDataFinal, vDataInicio));
SET vPrecoTotal = vDias * vPrecoUnitario;
SELECT cliente_id FROM clientes WHERE nome = vClienteNome; ## AQUI NÃO TERIA QUE USAR UM SET(SET vCliente = (SELECT cliente_id FROM clientes WHERE nome = vClienteNome);)
INSERT INTO alugueis VALUES (vAluguel, vCliente, vHospedagem, vDataInicio, vDataFinal, vPrecoTotal);
SET vMensagem = 'Aluguel incluído na base com sucesso.';
SELECT vMensagem;
END IF
END$$
DELIMITER ;