Cursos / Redes de Computadores / Conceitos de Banco de Dados / Aula

arrow_back Aula 08 - Linguagem SQL - Stored Procedures e Funções

Criando, executando e apagando procedimentos armazenados

A instrução para criar um procedimento armazenado é simples, basta utilizar o comando CREATE PROCEDURE em conjunto com a lista de parâmetros (caso necessário) a serem usados. A sintaxe de criação de um procedimento armazenado é descrita no destaque a seguir.

AخA
1
mysql> CREATE PROCEDURE nome_do_procedimento
2
    ([parâmetros de entrada e/ou saída])
3
    BEGIN
4
        comandos em SQL
5
    END;

Nessa expressão, no campo nome_do_procedimento, deve-se inserir o nome que se deseja atribuir para o procedimento, nome esse que deve seguir as mesmas regras usadas para os nomes das tabelas, conforme foi visto na Aula 3. Em seguida, caso haja, deve-se inserir a lista de parâmetros de entrada e/ou saída. Mesmo não havendo parâmetros, devem ser inseridos os parênteses. Finalmente, entre as palavras BEGIN e END, devem ser descritos os comandos SQL que definem a operação a ser executada.

A lista de parâmetros segue a notação [IN | OUT] nome_do_parâmetro tipo_do_dado, ou seja, deve-se usar a palavra-chave que identifica se o parâmetro é de entrada (IN) ou saída (OUT). Se nada for informado, será entendido que o parâmetro é de entrada, o nome do parâmetro e o tipo que ele representa, conforme visto na Aula 3.

Vamos exercitar a criação de Stored procedures no banco de dados sistvendas para entendermos melhor o seu conceito? Na aula anterior sobre visões, um dos exemplos que foram trabalhados foi a consulta aos nomes de todos os produtos que foram vendidos. Visto que esse tipo de pesquisa tende a ser realizada diariamente num banco de dados de um sistema de vendas para gerenciamento de estoque, seria útil definir um procedimento armazenado para executar essa operação. O comando para criar essa Stored procedure é descrito no quadro a seguir.

7
1
mysql> CREATE PROCEDURE produtos_vendidos()
2
    BEGIN
3
        SELECT  prod_nome
4
        FROM produtos, compras
5
        WHERE prod_codigo = comp_codproduto
6
        GROUP BY prod_nome;
7
    END

Observe que foi criado um procedimento armazenado denominado de produtos_vendidos, não sendo definido qualquer parâmetro, e os comandos que definem sua operação encontram-se entre as palavras-chave BEGIN e END. A execução do procedimento armazenado é feita usando o comando apresentado no quadro a seguir.

1
1
mysql> CALL produtos_vendidos();

Para analisarmos a aplicação dos procedimentos armazenados no banco de dados sistvendas, apresentam-se, na Figura 1, os dados presentes nas tabelas do banco de dados.

Figura 01 - Tela do MySQL após os comandos SELECT * FROM produtos, SELECT * FROM clientes e SELECT * FROM compras.
Tela do MySQL após os comandos SELECT * FROM <span class='strong'>produtos</span>, SELECT * FROM <span class='strong'>clientes</span> e SELECT * FROM <span class='strong'>compras</span>.
Fonte: MySQL 5.7 Command Line Client

A resposta do sistema SGBD para os comandos anteriores é ilustrada na Figura 2. É interessante notar o uso do operador DELIMITER antes da criação do procedimento. Ele é usado para redefinir o caractere delimitador de comandos como “|”, isso é feito para que possamos usar o caractere “;” no meio do procedimento. Caso não efetuemos essa troca, o procedimento será enviado pela metade e uma mensagem de erro será enviada ao terminal, por problemas na sintaxe.

Figura 02 - Tela do MySQL após os comandos CREATE PROCEDURE e CALL.
Tela do MySQL após os comandos CREATE PROCEDURE e CALL.
Fonte: MySQL 5.7 Command Line Client

play_circle_filled
Vídeo 01 - Introdução a Stored Procedures

Versão 5.3 - Todos os Direitos reservados