Resumo : neste tutorial, você aprenderá como usar a ALTER PROCEDURE
instruçã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 PROCEDURE
instruçã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 PROCEDURE
palavras-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 PROCEDURE
instruçã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 PROCEDURE
declaração não apoia isso. Para implementar tais modificações, você precisa:
- Primeiro, elimine o procedimento armazenado usando a
DROP PROCEDURE
instrução. - Segundo, recrie o procedimento armazenado usando a
CREATE PROCEDURE
instruçã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 PROCEDURE
e CREATE PROCEDURE
para 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 PROCEDURE
instrução MySQL para modificar as características de um procedimento armazenado. - Elimine e recrie um procedimento armazenado para modificar seus parâmetros e corpo.