1
resposta

[Sugestão] 05 Mão na massa: explorando a ocupação de hospedagens

Pode ser usado o DELIMITER // também.

1 resposta

Olá, Fábio! Tudo bem?

Exatamente! Essa é uma excelente observação técnica.

O uso do DELIMITER // (ou qualquer outro caractere que não seja o ponto e vírgula padrão) é uma prática essencial quando estamos criando Stored Procedures, Triggers ou Functions no MySQL.

Por que mudar o delimitador é importante?

Por padrão, o MySQL interpreta o ; como o fim de uma instrução. Quando estamos escrevendo um bloco de código (como uma PROCEDURE), ele possui vários comandos internos que também terminam em ;.

Se não mudarmos o delimitador, o MySQL tentará executar a primeira linha interna que encontrar com ;, resultando em um erro de sintaxe, pois ele "fecharia" a criação da função antes da hora.


Exemplo Prático

Ao usar o //, você avisa ao banco de dados: "Ei, não pare no ponto e vírgula; só considere que este bloco terminou quando encontrar o //".

DELIMITER //

CREATE PROCEDURE CalcularOcupacao(vHospedagem VARCHAR(10))
BEGIN
    -- Vários comandos com ponto e vírgula aqui dentro
    SELECT * FROM reservas WHERE hospedagem_id = vHospedagem;
END //

DELIMITER ;

Dica de ouro

Sempre lembre de voltar o delimitador para o padrão com DELIMITER ; logo após o END //. Caso contrário, seus próximos comandos SELECT simples não funcionarão com o ; comum.

Obrigado por compartilhar essa dica com a comunidade! Isso ajuda muito quem está começando a lidar com blocos de código mais complexos no Workbench ou no terminal.

Espero que possa ter lhe ajudado! Você costuma usar o // por preferência ou já teve problemas com outros caracteres como $$?