MySQL – Procedimentos Armazenados (Stored Procedures) Básico – 34
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:
Boa noite Fabio, gostei muito do seu post, ficou super bem explicado. Mas queria tirar uma dúvida se possível. Como faço para uma stored procedure poder rodar em determinado horario ou de tempo em tempo? Isso é possível?