1
resposta

Exercício

-- 1. Mudar o delimitador
DELIMITER $$

-- 2. Criar a Procedure com a nova lógica (duracao ao invés de data final)
CREATE PROCEDURE novoAluguel_Final (
    IN vAluguel VARCHAR(10), 
    IN vCliente VARCHAR(10), 
    IN vHospedagem VARCHAR(10), 
    IN vDataInicio DATE,
    IN vDuracaoDias INT, -- Novo parâmetro: Duração em dias
    IN vPrecoUnitario DECIMAL(10,2)
)
BEGIN
    DECLARE vDataFinal DATE;
    DECLARE vPrecoTotal DECIMAL(10,2);
    DECLARE vMensagem VARCHAR(150);
    
    -- TRATAMENTO DE ERRO: Gerencia o erro de Chave Duplicada (Código 1062)
    DECLARE EXIT HANDLER FOR 1062
    BEGIN
        SET vMensagem = CONCAT('ERRO 1062: O ID de aluguel (', vAluguel, ') já existe na base.');
        SELECT vMensagem;
    END;

    -- 3. CÁLCULO DE REGRAS DE NEGÓCIO
    -- Substituir data final pela duração: Usa DATE_ADD(data, INTERVAL valor unidade)
    SET vDataFinal = DATE_ADD(vDataInicio, INTERVAL vDuracaoDias DAY);
    
    -- Determinar o custo total: Multiplica dias pela diária
    SET vPrecoTotal = vDuracaoDias * vPrecoUnitario;
    
    -- 4. INSERÇÃO SEGURA (DML)
    INSERT INTO alugueis 
    (aluguel_id, cliente_id, hospedagem_id, data_inicio, data_final, preco_total) 
    VALUES 
    (vAluguel, vCliente, vHospedagem, vDataInicio, vDataFinal, vPrecoTotal);
    
    -- Mensagem de sucesso
    SET vMensagem = CONCAT('SUCESSO: Aluguel ', vAluguel, ' incluído. Data Final Calculada: ', vDataFinal);
    SELECT vMensagem;

END$$

-- 5. Restaurar o delimitador
DELIMITER ;

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi, Mauro! Como vai?

Agradeço por compartilhar.

Gostei da forma como você estruturou sua procedure, substituindo a data final pela duração, ficou bem claro e organizado. Sua lógica para calcular vDataFinal e vPrecoTotal está coerente com o que a atividade propõe. Continue explorando essas possibilidades no MySQL.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!