PROCEDIMENTO DE CRIAÇÃO MySQL

Resumo : neste tutorial, você aprenderá passo a passo como usar a CREATE PROCEDUREinstrução MySQL para criar novos procedimentos armazenados.

Introdução à instrução MySQL CREATE PROCEDURE

Para criar um procedimento armazenado, você usa a CREATE PROCEDUREinstrução.

Aqui está a sintaxe básica da CREATE PROCEDUREinstrução:

CREATE PROCEDURE sp_name(parameter_list)
BEGIN
   statements;
END;

Nesta sintaxe:

  • Primeiro, defina o nome do procedimento armazenado sp_nameapós as CREATE PROCEDUREpalavras-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 BEGINe END.

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 EXISTSapós as CREATE PROCEDUREpalavras-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 EXISTScláusula está disponível desde a versão 8.0.29 do MySQL.

Exemplo de instrução MySQL CREATE PROCEDURE

Usaremos a productstabela 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 PROCEDUREinstruçã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 classicmodelsbanco 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:

Exemplo de CREATE PROCEDURE do MySQL, etapa 2

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 :

Exemplo de CREATE PROCEDURE do MySQL, etapa 4

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...ENDbloco:

O nome do procedimento armazenado GetAllCustomers()retorna todas as linhas da customerstabela 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 CALLinstruçã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 CALLpalavra-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 PROCEDUREinstrução para criar um novo procedimento armazenado.
  • Use a CALLinstrução para executar um procedimento armazenado.
  • MySQL armazena os procedimentos armazenados no servidor.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *