Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

MySQL: executando Procedures - Estruturas condicionais

https://cursos.alura.com.br/course/banco-dados-mysql-executando-procedures
Achei confuso, a didatica nao é ruim, mas nao consigo entender ja assisti 3 vezes o modulo de Estruturas condicionais E nao consigo entender aquela montoeira de codigo na procedure. nem copiando funciona, o professor faz de um jeito, eu envio o print do codigo que o professor mostra na aula. o gpt me fala outra coisa. e daqui a pouco o professor muda tudo que colocou no codigo. ficou uma verdadeira salada de informação espalhada

1 resposta
solução!

Olá, Thiago. Como vai?

Sinto muito que você esteja passando por essa frustração. É perfeitamente normal se sentir assim quando estudamos Stored Procedures e estruturas condicionais no SQL. Diferente de uma consulta simples (SELECT), a Procedure introduz a lógica de programação dentro do banco de dados, e a sintaxe do MySQL para isso (com o uso de DELIMITER, BEGIN, END e IF) pode parecer bem "poluída" visualmente no início.

Para te ajudar a sair dessa "salada de informações", vamos tentar isolar a estrutura fundamental. O segredo para não se perder na montoeira de código é entender que a Procedure é apenas um "envelope" que guarda uma lógica lá dentro.

1. O esqueleto da Procedure

O professor muda o código porque ele está construindo a lógica aos poucos, mas a estrutura básica é sempre esta:

DELIMITER $$ -- Mudamos o delimitador para o MySQL não achar que a Procedure acaba no primeiro ";"

CREATE PROCEDURE NomeDaProcedure (IN parametro_entrada INT)
BEGIN
    -- O código de verdade fica aqui dentro
END $$

DELIMITER ; -- Voltamos para o delimitador padrão

2. A estrutura do IF no MySQL

A confusão com o IF geralmente acontece porque ele é um pouco diferente de linguagens como Python ou JavaScript. No MySQL, ele funciona assim:

IF (condicao) THEN
    -- Ação se for verdadeiro
ELSE
    -- Ação se for falso
END IF;

3. Por que o código do GPT ou do professor pode variar?

Às vezes o código não funciona por detalhes bobos da sintaxe do MySQL, como:

  • Falta do DELIMITER: Sem ele, o MySQL tenta executar linha por linha e dá erro.
  • Variáveis não declaradas: No MySQL, você precisa declarar variáveis locais logo após o BEGIN usando o comando DECLARE.
  • Ponto e vírgula: Dentro da Procedure, cada comando interno PRECISA terminar com ;.

Dica de ouro para não se perder:

Em vez de tentar copiar o código inteiro de uma vez, tente construir o "envelope" (o item 1 acima) e dar um SELECT 'Teste'; lá dentro. Funcionou? Agora apague o Select e coloque um IF simples. Vá testando em pequenas partes.

Se você puder colar aqui o erro específico que aparece no seu console ou o trecho do código que travou, eu consigo te ajudar a "limpar" essa lógica e fazer ela rodar!

Espero que possa ter lhe ajudado!