Instrução ALTER PROCEDURE do MySQL

Resumo : neste tutorial, você aprenderá como usar a ALTER PROCEDUREinstrução MySQL para modificar um procedimento armazenado existente no banco de dados MySQL.

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

Para alterar as características de um procedimento armazenado, você usa a ALTER PROCEDUREinstrução:

ALTER PROCEDURE sp_name [characteristic ...]Linguagem de código:  CSS  ( css )

Nesta sintaxe:

  • Primeiro, especifique o nome do procedimento armazenado que deseja modificar após as ALTER PROCEDUREpalavras-chave. Observe que você não usa parênteses ()após o nome do procedimento armazenado ( sp_name).
  • Segundo, especifique as características que deseja alterar após o nome do procedimento armazenado.

Aqui estão as características de um procedimento armazenado que você pode alterar com a ALTER PROCEDUREinstrução:

characteristic: {
    COMMENT 'string'
  | LANGUAGE SQL
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
}Linguagem de código:  JavaScript  ( javascript )

Às vezes, você pode querer modificar um procedimento armazenado adicionando ou removendo parâmetros ou até mesmo alterando seu corpo.

No entanto, é importante notar que a ALTER PROCEDUREdeclaração não apoia isso. Para implementar tais modificações, você precisa:

  • Primeiro, elimine o procedimento armazenado usando a DROP PROCEDUREinstrução.
  • Segundo, recrie o procedimento armazenado usando a CREATE PROCEDUREinstrução.

É importante fazer backup do procedimento armazenado antes de fazer alterações para que você possa restaurá-lo se algo der errado.

Exemplo de instrução MySQL ALTER PROCEDURE

Primeiro, conecte-se ao banco de dados de amostra classicmodels :

mysql -u root -p classicmodels

Segundo, crie um novo procedimento armazenado chamado GetAllEmployees()que retorne todos os funcionários:

DELIMITER //

CREATE PROCEDURE GetEmployees()
BEGIN
	SELECT * FROM employees;
END // 

DELIMITER ;Linguagem de código:  JavaScript  ( javascript )

Terceiro, mostre a definição do procedimento armazenado:

SHOW CREATE PROCEDURE GetEmployees\G

Saída:

*************************** 1. row ***************************
           Procedure: GetEmployees
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEmployees`()
BEGIN
        SELECT * FROM employees;
END
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
  Database Collation: utf8mb4_bin
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Quarto, adicione um comentário ao procedimento armazenado GetEmployees usando a instrução ALTER PROCEDURE:

ALTER PROCEDURE GetEmployees COMMENT "Get employees";Linguagem de código:  JavaScript  ( javascript )

Por fim, mostre a definição do procedimento armazenado para ver se os comentários foram adicionados com sucesso ou não:

 SHOW CREATE PROCEDURE GetEmployees\G

Saída:

*************************** 1. row ***************************
           Procedure: GetEmployees
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEmployees`()
    COMMENT 'Get employees'
BEGIN
        SELECT * FROM employees;
END
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
  Database Collation: utf8mb4_bin
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

A saída indica que adicionamos o comentário com sucesso:

COMMENT 'Get employees'Linguagem de código:  JavaScript  ( javascript )

Modificando um procedimento armazenado usando MySQL Workbench

Mostraremos como usar o MySQL Workbench para eliminar e recriar um procedimento armazenado.

Primeiro, crie um procedimento armazenado que retorne o valor total de todos os pedidos de vendas:

DELIMITER $$

CREATE PROCEDURE GetOrderAmount()
BEGIN
    SELECT 
        SUM(quantityOrdered * priceEach) 
    FROM orderDetails;
END$$

DELIMITER ;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Suponha que você queira recuperar o valor total de um determinado pedido de venda. Neste caso, você precisa adicionar um parâmetro e modificar o código no procedimento armazenado.

Em segundo lugar, clique com o botão direito no procedimento armazenado que deseja modificar e selecione Alterar procedimento armazenado…

MySQL Workbench abrirá uma nova aba contendo a definição do procedimento armazenado.

Terceiro, faça as alterações necessárias e clique no botão Aplicar .

MySQL Workbench apresentará uma janela de revisão de script SQL.

As imagens (1) e (2) indicam que o MySQL Workbench usa uma sequência de instruções DROP PROCEDUREe CREATE PROCEDUREpara implementar a modificação.

Quarto, clique no botão Aplicar para executar o script.

MySQL Workbench exibirá uma janela que mostra o status da execução do script.

Por fim, clique no botão Concluir para concluir a alteração.

Resumo

  • Use a ALTER PROCEDUREinstrução MySQL para modificar as características de um procedimento armazenado.
  • Elimine e recrie um procedimento armazenado para modificar seus parâmetros e corpo.

Deixe um comentário

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