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, begin e end
  • 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 into usando os parâmetros como valores
  • 13:00 - Executa e encontra a procedure em Stored Procedures
  • 13:40 - Chama com call e 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:

Codigo
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.

Ícone SQLSQL Impressionador

Domine a linguagem mais importante do Mundo para quem trabalha com Dados, seja para se destacar na sua empresa atual, para conseguir um diferencial em processos seletivos ou até mesmo para entrar em áreas de dados.

Começar agoraSeta para a direita
Fundo SQLTelas SQL
Luz SQL

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.

Codigo
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.

SQL
select * from locais;
Tabela 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.

Codigo
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.

Codigo
call insere_locais('Santos', 'SP', 'Sudeste');
Tabela após a inserção

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.

Codigo
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.

Codigo
call exclui_locais('Santos');
Tabela após a exclusão da linha com a cidade de 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!


Quer aprender mais sobre SQL com um minicurso básico gratuito?