Procedimentos Armazenados em MySQL (Stored Procedures)
Um procedimento armazenado (Stored Procedure, em inglês) é uma sub-rotina disponível para aplicações que acessam sistemas de bancos de dados relacionais.
Podem ser usados para validação de dados, controle de acesso, execução de declarações SQL complexas e muitas outras situações.
Desde a versão 5.0 o MySQL suporta a criação e execução de Stored Procedures.
Criar Procedimentos Armazenados
A seguir temos a sintaxe para criação de um Procedimento Armazenado em MySQL:
CREATE PROCEDURE nome_procedimento (parâmetros)
declarações;
Executando um Procedimento:
Para invocar uma stored procedure usamos a instrução CALL:
CALL nome_procedimento (parâmetros);
Exemplo:
Vamos a um exemplo. Iremos criar um procedimento para consulta de preço de livros, passando como parâmetro o ID do livro:
CREATE PROCEDURE verPreço (varLivro smallint) SELECT CONCAT('O preço do livro ', Nome_Livro, ' é ', Preco_Livro) AS Preço FROM tbl_Livro WHERE ID_Livro = varLivro;
Invocando o procedimento:
CALL verPreço(3);
Exemplo 02: Procedimento para trazer os preços dos livros de uma determinada editora, por nome da editora
CREATE PROCEDURE consultaLivros (varEditora VARCHAR(50)) SELECT CONCAT('O livro ', Nome_Livro, ' custa ', Preco_Livro) AS Preço FROM tbl_Livro INNER JOIN tbl_editoras ON tbl_livro.ID_editora = tbl_editoras.ID_Editora WHERE tbl_editoras.Nome_Editora = varEditora;
Invocando o procedimento:
CALL consultaLivros('O´Reilly');
Excluir stored procedure
Para excluir uma stored procedure do sistema, usamos a declaração DROP PROCEDURE, seguida do nome do procedimento a ser excluído:
DROP PROCEDURE nome_procedimento;
Por exemplo, para excluir a procedure verPreço criada no exemplo anterior:
DROP PROCEDURE verPreço;
O vídeo a seguir mostra como criar executar procedimentos armazenados simples em MySQL: