O que é uma Procedure em SQL? E como criar Procedure no SQL?
Aprenda o que é uma procedure em SQL! Veja como criar procedures no MySQL e como utilizá-las com exemplos práticos.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
O que você aprende neste vídeo
Resposta rápida: Uma procedure é um bloco de comandos SQL salvo dentro do banco e executado com call nome(...) sempre que precisar. No MySQL, você troca o delimitador antes de escrever create procedure com begin e end, senão o cliente encerra o bloco no primeiro ponto e vírgula. Compensa quando o código é longo e repetido.
Neste vídeo (19 min):
- 2:05 - Define procedure como bloco de comandos salvo no banco
- 3:20 - Mostra a sintaxe: delimitador,
create procedure,begineend - 4:25 - Explica por que o ponto e vírgula encerra cada comando
- 5:45 - Troca o delimitador para
$$antes de criar o bloco - 8:10 - Abre o primeiro exemplo: inserir dados na tabela locais
- 10:00 - Cria a procedure com três parâmetros do tipo
varchar - 11:00 - Escreve o
insert intousando os parâmetros como valores - 13:00 - Executa e encontra a procedure em Stored Procedures
- 13:40 - Chama com
calle insere a cidade de Santos - 14:50 - Repete a estrutura para uma procedure que exclui linhas
- 15:50 - Escreve
delete from locais where cidade = c - 17:10 - Apaga a procedure com
drop procedure
Trechos do vídeo:
- Uma procedure é um bloco de código salvo no banco para ser executado sempre que você precisar.
- Sem trocar o delimitador, a procedure terminaria no primeiro ponto e vírgula dentro do bloco.
- Em vez de reescrever o código toda vez, você chama a procedure e ela executa tudo.
Uma procedure em SQL é um bloco de comandos salvo dentro do banco de dados e executado quando você quiser com call nome_procedure(...). No MySQL, você cria com create procedure nome(parâmetros) begin ... end, trocando antes o delimitador (delimiter $$) para o cliente não encerrar o bloco no primeiro ponto e vírgula. Serve para reaproveitar código longo sem reescrevê-lo a cada uso.
O que é uma Procedure em SQL?
Na aula de hoje, vou te mostrar o que é uma procedure em SQL. Vou te guiar pelo passo a passo para criar uma procedure e como utilizá-la em exemplos práticos.
Você entenderá a estrutura da procedure para compreender sua sintaxe dentro do MySQL.
Em seguida, exploraremos dois exemplos práticos utilizando procedures no SQL para inserir e excluir dados de uma tabela. Dessa forma, você aprenderá a aplicar a procedure em um contexto real.
E aí, já sabe usar as procedures em SQL? Ainda não? Então, vem comigo que eu vou te ensinar!
Definição e sintaxe de uma procedure
As procedures no SQL são blocos de código que podem ser armazenados e executados no banco de dados.
No SQL, utilizamos diversos comandos para manipular e interagir com bancos de dados, e uma procedure nos permite reunir e agrupar esses comandos em um bloco de código que pode ser chamado para execução quando quisermos.
Ao criar uma procedure, precisamos definir um nome para ela, configurar delimitadores personalizados e passar os parâmetros necessários que ela utilizará quando for chamada. A sintaxe básica da procedure é a seguinte:
delimiter $$
create procedure nome_procedure(parâmetros)
begin
-- código
end $$
delimiter ;Delimitadores em Procedures
Sempre que trabalhamos com muitas linhas de código no SQL, essas linhas precisam ser delimitadas por meio de um separador, que por padrão é o ponto e vírgula (;).
Isso indica para o SQL que aquele código, aquele comando, deve ser executado até aquela etapa.
Como nas procedures queremos trabalhar com um bloco de códigos, com diversos comandos sendo executados de uma vez, precisamos ajustar o delimitador para que o SQL não entenda que a cada ponto e vírgula, o comando foi finalizado.
Por isso, alteramos o delimitador para outro caractere temporariamente. Então antes de criar uma procedure, vamos primeiro alterar o delimitador, definindo um novo caractere ou conjunto de caracteres.
Você pode definir os caracteres que desejar como delimitador temporário, mas é importante que os caracteres escolhidos não interfiram com as sintaxes já existentes do SQL. Por isso, é muito comum vermos o uso de $$ como delimitador temporário.
Após definir o novo delimitador, o SQL irá executar todo o bloco de código contido dentro dele, até o final daquele delimitador. Após encerrar o delimitador temporário, podemos voltar para o delimitador padrão.
Criação da Procedure
Uma procedure é criada utilizando o comando create procedure seguido do nome da procedure e, entre parênteses, os parâmetros necessários para que ela funcione corretamente.
Uma mesma procedure pode ter diversos parâmetros e de diferentes tipos, como inteiros, varchar, e assim por diante.
Após incluir e definir os parâmetros e seus tipos, seguimos com o bloco begin, onde o código é efetivamente desenvolvido.
delimiter $$
create procedure nome_procedure(par1 int, par2 varchar(100))
begin
-- código
end $$
delimiter ;Vamos ver dois exemplos práticos de criação e utilização das procedures no SQL para que você possa compreender todo o processo de criar e aplicar uma procedure em seu código.
Inserindo Dados na Tabela Usando Procedure
O primeiro exemplo que realizaremos nesta aula será a criação de uma procedure para inserir dados em uma tabela específica do banco de dados. No meu caso, eu utilizarei a tabela locais.
select * from locais;
A partir disso, criaremos uma procedure para inserir dados nessa tabela através do comando insert into.
Para criar nossa procedure, o primeiro passo será definir o delimitador temporário. Em seguida, usaremos o comando create procedure, passando o nome da nossa procedure e os parâmetros que ela precisa receber.
Os parâmetros necessários que esta procedure precisa receber são as informações que queremos adicionar à nossa tabela. Neste caso, vamos definir os parâmetros cidade (c), estado (e) e região (r), sendo todos eles do tipo varchar.
Feito isso, dentro da procedure vamos criar o nosso bloco begin. Dentro dele, iremos definir o código que iremos executar para inserir os valores nas colunas correspondentes da tabela locais.
Esses valores serão inseridos através do comando insert into, que recebe o nome da tabela e uma lista das colunas presentes na tabela onde serão inseridos esses valores.
Em seguida, passamos os valores que devem ser inseridos nas colunas especificadas, definindo-os na mesma ordem em que declaramos as colunas.
Após adicionar os valores, vamos exibir a tabela com o comando select.
delimiter $$
create procedure insere_locais(c varchar(100), e varchar(100), r varchar(100))
begin
insert into locais(cidade, estado, região)
values (c, e, r);
select * from locais;
end $$
delimiter ;Selecionamos todo esse código e executamos para criar a nossa procedure. Feito isso, basta chamá-la utilizando o comando call e passando os argumentos necessários, nesse caso, os valores para c, e e r.
call insere_locais('Santos', 'SP', 'Sudeste');
Perceba que a procedure executou todo nosso código corretamente, e com isso, sempre que precisarmos inserir uma informação no nosso banco de dados, ao invés de precisar definir todo o código contido na procedure, basta chamá-la com os argumentos necessários.
As procedures tornam os códigos muito mais práticos, além de evitar a repetição de códigos extensos.
Exclusão de Dados com Procedure
Da mesma forma, podemos criar uma procedure capaz de excluir dados da tabela.
O procedimento para criação da procedure será o mesmo que da anterior, com a diferença que dessa vez ela receberá apenas um parâmetro referente à cidade. Ao encontrar a cidade desejada, toda a linha será deletada.
Para deletar essa linha, vamos usar o comando delete, filtrando a tabela com o comando where. Dessa forma, vamos deletar a linha onde a cidade da coluna Cidade seja igual à cidade fornecida para o parâmetro c.
delimiter $$
create procedure exclui_locais(c varchar(100))
begin
delete from locais
where Cidade = c;
select * from locais;
end $$
delimiter ;Vamos executar esse código para criar de fato a procedure e, em seguida, com o comando call, vamos utilizá-la para deletar a linha da cidade de Santos da tabela.
call exclui_locais('Santos');
Perceba que agora não temos mais a cidade de Santos sendo exibida dentro da nossa tabela Locais.
Conclusão – O que é uma Procedure em SQL?
Na aula de hoje, você aprendeu o que é uma procedure em SQL, assim como o passo a passo para criá-la e utilizá-la em seus códigos.
Vimos como as procedures tornam os códigos muito mais práticos e evitam a repetição de códigos extensos.
As procedures são uma ótima ferramenta para simplificar e permitir a fácil reutilização de códigos mais complexos, ficando salvas em seu banco de dados para serem utilizadas sempre que necessário.
Aproveite e confira o curso completo de SQL da Hashtag Treinamentos!
Perguntas frequentes sobre procedures em SQL
1. Qual a diferença entre procedure e function no SQL?
A procedure é chamada com call, pode executar vários comandos (inclusive insert e delete) e não precisa devolver valor. A function devolve sempre um valor e é usada dentro de uma consulta, como em select minha_funcao(coluna) from tabela;.
2. Para que serve o delimiter na criação de uma procedure?
O ponto e vírgula avisa o cliente SQL de que o comando terminou. Como o corpo da procedure tem vários comandos com ponto e vírgula, sem trocar o delimitador o cliente encerraria a criação na primeira linha. Por isso usamos delimiter $$ antes e delimiter ; depois.
3. Como criar procedure no SQL Server e no PostgreSQL?
A ideia é a mesma, a sintaxe muda. No SQL Server não existe delimiter: é CREATE PROCEDURE nome @param VARCHAR(100) AS BEGIN ... END;. No PostgreSQL, CREATE PROCEDURE nome(p VARCHAR) LANGUAGE plpgsql AS $$ BEGIN ... END; $$;. Os exemplos deste artigo seguem o MySQL.
4. Como alterar ou excluir uma procedure já criada?
Para remover, use drop procedure if exists nome_procedure;. No MySQL, o alter procedure muda apenas características (como comentário e segurança), não o corpo — para mudar o código, apague e crie de novo. Use show create procedure nome_procedure; para ver o código atual.
Hashtag Treinamentos
Para acessar outras publicações de SQL, clique aqui!


