Resumo : neste tutorial, você aprenderá passo a passo como usar a CREATE PROCEDURE
instrução MySQL para criar novos procedimentos armazenados.
Introdução à instrução MySQL CREATE PROCEDURE
Para criar um procedimento armazenado, você usa a CREATE PROCEDURE
instrução.
Aqui está a sintaxe básica da CREATE PROCEDURE
instrução:
CREATE PROCEDURE sp_name(parameter_list)
BEGIN
statements;
END;
Nesta sintaxe:
- Primeiro, defina o nome do procedimento armazenado
sp_name
após asCREATE PROCEDURE
palavras-chave. - Segundo, especifique a lista de parâmetros (
parameter_list
) entre parênteses seguida do nome do procedimento armazenado. Se o procedimento armazenado não tiver parâmetros, você poderá usar parênteses vazios()
. - Terceiro, escreva o corpo do procedimento armazenado que consiste em uma ou mais instruções SQL válidas entre o bloco
BEGIN
eEND
.
Se você tentar criar um procedimento armazenado que já existe, o MySQL emitirá um erro.
Para evitar o erro, você pode adicionar uma cláusula adicional IF NOT EXISTS
após as CREATE PROCEDURE
palavras-chave:
CREATE PROCEDURE [IF NOT EXISTS] sp_name ([parameter[,...]])
routine_body;
Linguagem de código: CSS ( css )
Neste caso, o MySQL emitirá um aviso se você tentar criar um procedimento armazenado com um nome que já existe, em vez de gerar um erro.
Observe que a IF NOT EXISTS
cláusula está disponível desde a versão 8.0.29 do MySQL.
Exemplo de instrução MySQL CREATE PROCEDURE
Usaremos a products
tabela do banco de dados de exemplo para a demonstração:
Observe que apresentaremos apenas a sintaxe e os passos para definir um novo procedimento armazenado. No próximo tutorial, você aprenderá como definir um procedimento armazenado com parâmetros .
As instruções a seguir criam um novo procedimento armazenado chamado GetAllProducts()
:
DELIMITER //
CREATE PROCEDURE GetAllProducts()
BEGIN
SELECT * FROM products;
END //
DELIMITER ;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como funciona:
Primeiro, altere o delimitador padrão para //
:
DELIMITER //
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, use a CREATE PROCEDURE
instrução para criar um novo procedimento armazenado. Como alteramos o delimitador para //
, agora podemos usar ponto e vírgula ( ;
) dentro do procedimento armazenado:
CREATE PROCEDURE GetAllProducts()
BEGIN
SELECT * FROM products;
END //
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, altere o delimitador de volta para o delimitador padrão, que é um ponto e vírgula ( ;
):
DELIMITER ;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Criando um procedimento armazenado usando o cliente MySQL
Primeiro, conecte-se ao classicmodels
banco de dados de amostra usando o cliente mysql:
C:\>mysql -u root -p classicmodels
Enter password: ********
Segundo, altere o delimitador para //
:
mysql> DELIMITER //
Linguagem de código: JavaScript ( javascript )
Terceiro, digite o seguinte código para criar o procedimento armazenado:
mysql> CREATE PROCEDURE GetAllProducts()
-> BEGIN
-> SELECT * FROM products;
-> END //
Query OK, 0 rows affected (0.01 sec)
Linguagem de código: JavaScript ( javascript )
Por fim, altere o delimitador novamente para ponto e vírgula:
DELIMITER ;
Criando um procedimento armazenado usando o ambiente de trabalho MySQL
Primeiro, inicie o MySQL Workbench e faça login como conta root.
Segundo, crie uma nova guia SQL para executar consultas:
Terceiro, insira as instruções na guia SQL:
Quarto, execute as instruções.
Observe que você pode selecionar todas as instruções na guia SQL (ou nada) e clicar no botão Executar.
Se tudo estiver bem, o MySQL criará o procedimento armazenado e o salvará no servidor.
Quinto, verifique o procedimento armazenado abrindo o nó Stored Procedures . Se você não vir o procedimento armazenado, clique no botão Atualizar próximo ao título ESQUEMAS :
Criando um procedimento armazenado usando o assistente MySQL Workbench
Ao usar o assistente MySQL Workbench, você não precisa se preocupar com muitas coisas, como delimitadores ou executar o comando para criar procedimentos armazenados.
Primeiro, clique com o botão direito em Procedimentos Armazenados no Navegador e selecione o item de menu Criar Procedimento Armazenado… .
A seguinte aba será aberta:
Segundo, altere o nome do procedimento armazenado e adicione o código entre o BEGIN...END
bloco:
O nome do procedimento armazenado GetAllCustomers()
retorna todas as linhas da customers
tabela do banco de dados de amostra .
Terceiro, clique no botão Aplicar , o MySQL Workbench abrirá uma nova janela para revisão do script SQL antes de aplicá-lo ao banco de dados:
Quarto, clique no botão Aplicar para confirmar. MySQL Workbench criará o procedimento armazenado:
Quinto, clique no botão Concluir para fechar a janela.
Por fim, visualize o procedimento armazenado na lista Procedimentos armazenados :
Executando um procedimento armazenado
Para executar um procedimento armazenado, você usa a CALL
instrução:
CALL sp_name(argument_list);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- Primeiro, forneça o nome do procedimento armazenado que deseja executar após a
CALL
palavra-chave. - Segundo, se o procedimento armazenado tiver parâmetros, você precisará passar os argumentos para ele entre parênteses
()
após o nome do procedimento armazenado.
O seguinte ilustra como executar o GetAllProducts()
procedimento armazenado:
CALL GetAllProducts();
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Executar esta instrução é o mesmo que executar uma instrução SQL:
Aqui está a saída parcial:
Resumo
- Use a
CREATE PROCEDURE
instrução para criar um novo procedimento armazenado. - Use a
CALL
instrução para executar um procedimento armazenado. - MySQL armazena os procedimentos armazenados no servidor.