Buscar

Procedures SQL_ executando código no MySQL_ Aula 5 - Atividade 10 Consolidando o seu conhecimento _ Alura - Cursos online de tecnologia

Prévia do material em texto

17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 1/11
10
Consolidando o seu conhecimento
Chegou a hora de você seguir todos os
passos realizados por mim durante esta
aula. Caso já tenha feito, excelente. Se ainda
não, é importante que você execute o que foi
visto nos vídeos para poder continuar com a
próxima aula.
1) Quando o resultado de um SELECT possui
mais de uma linha não podemos atribuí-lo a
uma variável usando o SELECT INTO . Para
isso temos que usar o Cursor para receber
valores vindos de uma tabela, com uma ou
mais colunas.
2) Vamos criar uma SP que utilize Cursor.
Digite e execute:
USE sucos_vendas;
DROP procedure IF EXISTS cursor_pri
DELIMITER $$
USE sucos_vendas$$
CREATE PROCEDURE `cursor_primeiro_c
BEGIN
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
MODO
NOTURNO
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 2/11
COPIAR CÓDIGO
COPIAR CÓDIGO
 DECLARE vNome VARCHAR(50);
 DECLARE c CURSOR FOR SELECT NOME 
 OPEN c;
 FETCH c INTO vNome;
 SELECT vNome;
 FETCH c INTO vNome;
 SELECT vNome;
 FETCH c INTO vNome;
 SELECT vNome;
 FETCH c INTO vNome;
 SELECT vNome;
 CLOSE c;
END$$
DELIMITER ;
3) Note que cada linha da seleção é atribuída
a variável vNome , uma de cada vez. Execute:
call cursor_primeiro_contato;
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 3/11
4) Na SP acima executamos um Cursos
controlado onde sabíamos quantos
elementos o mesmo tinha. Mas,
normalmente, não sabemos esta
informação. Por isso usamos sempre o
Cursos combinados com um Looping. Digite
e execute a criação da SP abaixo:
USE sucos_vendas;
DROP procedure IF EXISTS cursor_loo
DELIMITER $$
USE `sucos_vendas`$$
CREATE PROCEDURE `cursor_looping` (
BEGIN
 DECLARE fim_do_cursor INT DEFAUL
 DECLARE vNome VARCHAR(50);
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 4/11
COPIAR CÓDIGO
COPIAR CÓDIGO
 DECLARE c CURSOR FOR SELECT NOME
 DECLARE CONTINUE HANDLER FOR NOT
 OPEN c;
 WHILE fim_do_cursor = 0
 DO
 FETCH c INTO vNome;
 IF fim_do_cursor = 0 THEN
 SELECT vNome;
 END IF;
 END WHILE;
 CLOSE c;
END$$
DELIMITER ;
5) Executando a SP:
call cursor_looping;
Teremos diversos resultados em diferentes
consultas.
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 5/11
6) O Cursor pode suportar mais de uma
coluna. Crie a SP abaixo:
USE sucos_vendas;
DROP procedure IF EXISTS looping_cu
DELIMITER $$
USE sucos_vendas$$
CREATE PROCEDURE `looping_cursor_mu
BEGIN
 DECLARE fim_do_cursor INT DEFAULT
 DECLARE vCidade, vEstado, vCep VA
 DECLARE vNome, vEndereco VARCHAR(
 DECLARE c CURSOR FOR
 SELECT nome, endereco_1, cidade, 
 DECLARE CONTINUE HANDLER FOR NOT 
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 6/11
COPIAR CÓDIGO
COPIAR CÓDIGO
 OPEN c;
 WHILE fim_do_cursor = 0
 DO
 FETCH c INTO vNome, vEndereco,
 IF fim_do_cursor = 0 THEN
 SELECT CONCAT(vNome, ' Ende
 vEndereco, ', ', vCidade , 
 END IF;
 END WHILE;
 CLOSE c;
END$$
DELIMITER ;
7) Execute-a:
call looping_cursor_multiplas_colun
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 7/11
Esta SP também retorna múltiplas consultas.
8) Também podemos criar uma função. A
diferença de uma função e uma SP é que a
função retorna um valor e pode ser usada
dentro de um comando SELECT , INSERT ,
UPDATE e condições de DELETE .
9) Para criar uma função vá com o botão da
direita do mouse sobre Function e selecione
Create Function:
10) Acrescente o código abaixo:
CREATE FUNCTION `f_acha_tipo_sabor`
BEGIN
 DECLARE vRetorno VARCHAR(20) defa
 CASE vSabor
 WHEN 'Lima/Limão' THEN SET vRetor
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 8/11
COPIAR CÓDIGO
 WHEN 'Laranja' THEN SET vRetorno 
 WHEN 'Morango/Limão' THEN SET vRe
 WHEN 'Uva' THEN SET vRetorno = 'N
 WHEN 'Morango' THEN SET vRetorno 
 ELSE SET vRetorno = 'Ácidos';
 END CASE;
 RETURN vRetorno;
END
11) Clique em Apply. Teremos o código que
poderá ser eecutado diretamente do script
MYSQL.
USE sucos_vendas;
DROP function IF EXISTS f_acha_tipo
DELIMITER $$
USE `sucos_vendas`$$
CREATE FUNCTION `f_acha_tipo_sabor`
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFGhttps://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 9/11
COPIAR CÓDIGO
BEGIN
 DECLARE vRetorno VARCHAR(20) defa
 CASE vSabor
 WHEN 'Lima/Limão' THEN SET vRetor
 WHEN 'Laranja' THEN SET vRetorno 
 WHEN 'Morango/Limão' THEN SET vRe
 WHEN 'Uva' THEN SET vRetorno = 'N
 WHEN 'Morango' THEN SET vRetorno 
 ELSE SET vRetorno = 'Ácidos';
 END CASE;
 RETURN vRetorno;
END$$
DELIMITER ;
12) Clique em Apply. Teremos o código que
poderá ser executado diretamente do script
MYSQL.
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 10/11
COPIAR CÓDIGO
COPIAR CÓDIGO
Observação: Se você veri�car um erro como
mostrado abaixo:
É porque o MYSQL não permite a
construção de Funções. Para permitir,
execute o comando:
SET GLOBAL log_bin_trust_function_c
E crie a função novamente.
13) Execute a função:
SELECT f_acha_tipo_sabor ("Laranja"
14) Podemos usar a função num comando
SELECT . Digite e execute:
SELECT NOME_DO_PRODUTO, SABOR, f_ac
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard
17/10/2023, 18:14 Procedures SQL: executando código no MySQL: Aula 5 - Atividade 10 Consolidando o seu conhecimento | Alura - Cursos o…
https://cursos.alura.com.br/course/mysql-procedures/task/56840 11/11
COPIAR CÓDIGO
 FROM tabela_de_produtos;
79%
DISCORD
ALURA
FÓRUM DO
CURSO
VOLTAR
PARA
DASHBOARD
106.3k xp
ATIVIDADES
10 DE 11
https://cursos.alura.com.br/course/mysql-procedures
https://discord.gg/Q35hcA5EFG
https://cursos.alura.com.br/forum/curso-mysql-procedures/todos
https://cursos.alura.com.br/dashboard
https://cursos.alura.com.br/user/kiasbarreto
https://cursos.alura.com.br/dashboard

Mais conteúdos dessa disciplina