USE `insight_places`;
DROP PROCEDURE IF EXISTS `insight_places`.`novoAluguel_34`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `novoAluguel_34`
(vAluguel VARCHAR(10), vClienteNome VARCHAR(150), vHospedagem VARCHAR(10), vDataInicio DATE, vDataFinal DATE, vPrecoUnitario DECIMAL(10,2))
BEGIN
DECLARE vCliente VARCHAR(10);
DECLARE vDias INTEGER DEFAULT 0;
DECLARE vNumCliente INTEGER;
DECLARE vPrecoTotal DECIMAL(10,2);
DECLARE vMensagem VARCHAR(100);
-- Verifica se há mais de um cliente com o mesmo nome
SET vNumCliente = (SELECT COUNT(*) FROM clientes WHERE nome = vClienteNome);
CASE
WHEN vNumCliente > 1 THEN
SET vMensagem = 'Este cliente não pode ser usado para incluir o aluguel pelo nome.';
SELECT vMensagem AS MensagemErro;
WHEN vNumCliente = 0 THEN
SET vMensagem = 'Este cliente não pode ser usado para incluir o aluguel porque não existe.';
SELECT vMensagem AS MensagemErro;
ELSE
-- Calcula a diferença de dias
SET vDias = DATEDIFF(vDataFinal, vDataInicio);
-- Calcula o preço total
SET vPrecoTotal = vDias * vPrecoUnitario;
-- Obtém o ID do cliente pelo nome
SELECT cliente_id INTO vCliente FROM clientes WHERE nome = vClienteNome LIMIT 1;
-- Insere o novo aluguel
INSERT INTO alugueis (aluguel_id, cliente_id, hospedagem_id, data_inicio, data_fim, preco_total)
VALUES (vAluguel, vCliente, vHospedagem, vDataInicio, vDataFinal, vPrecoTotal);
-- Define a mensagem de sucesso
SET vMensagem = 'Aluguel incluído na base com sucesso.';
SELECT vMensagem AS MensagemSucesso;
-- Seleciona o aluguel recém-inserido junto com o nome do cliente
SELECT a.*, c.nome AS Nome_Cliente
FROM alugueis a
JOIN clientes c ON a.cliente_id = c.cliente_id
WHERE a.aluguel_id = vAluguel;
END CASE;
END$$
DELIMITER ;
CALL novoAluguel_34('10007','Victorino Vila','8635','2023-03-30','2023-04-04',40);
CALL novoAluguel_34('10007','Júlia Pires','8635','2023-03-30','2023-04-04',40);
CALL novoAluguel_34('10007','Luana Moura','8635','2023-03-30','2023-04-04',40);
DELETE FROM alugueis WHERE aluguel_id = '10007';
Ao chamar a procedure: CALL novoAluguel_34('10007','Luana Moura','8635','2023-03-30','2023-04-04',40); eu nao tenho a mensagem definida no meu SET: 'Aluguel incluído na base com sucesso.'; , apenas a inclusao no banco