Bóson Treinamentos em Ciência e Tecnologia

MySQL – Procedimentos Armazenados (Stored Procedures) Básico – 34

MySQL - Procedimentos Armazenados - Básico

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:

Sair da versão mobile