Escolar Documentos
Profissional Documentos
Cultura Documentos
UNIDADE 3 – PROGRAMAÇÃO EM BD
UNOESC - JOAÇABA
Sintaxe de criação
DELIMITER $$
CREATE PROCEDURE nome_procedimento (parâmetros)
BEGIN
/*CORPO DO PROCEDIMENTO*/
END $$
DELIMITER ;
CRIANDO E INVOCANDO STORED PROCEDURES NO
MYSQL
Os “parâmetros” são opcionais e, caso não sejam necessários, devem permanecer
apenas os parênteses vazios na declaração do procedure.
Para que um procedimento receba parâmetros, é necessário seguir certa sintaxe
(dentro dos parênteses).
MODO
IN: apenas para entrada / recebimento de dados no método;
OUT: parâmetro de saída de valor. Deve ser uma variável “por referência”
INOUT: pode ser usada para armazenar valor de entrada e saída de dados. Deve
uma variável “por referência”
CRIANDO E INVOCANDO STORED PROCEDURES NO
MYSQL - uso do comando DELIMITER
Por padrão o MySQL utiliza o sinal de ponto e vírgula como delimitador de comandos,
separando as instruções a serem executadas.
No entanto, dentro do corpo do stored procedure será necessário separar algumas
instruções internamente utilizando esse mesmo sinal, por isso é preciso inicialmente
alterar o delimitador padrão do MySQL (neste caso, para $$) e ao fim da criação do
procedimento, restaurar seu valor padrão.
Tendo criado o procedure, chamá-lo é bastante simples. Para isso fazemos uso da
palavra reservada CALL.
CALL nome_procedimento(parâmetros);
CRIANDO E INVOCANDO STORED PROCEDURES NO
MYSQL – Alguns exemplos: PARÂMETRO DE ENTRADA – IN
DELIMITER $$
CALL Selecionar_Produtos(2);
CRIANDO E INVOCANDO STORED PROCEDURES NO
MYSQL – Alguns exemplos: PARÂMETRO DE SAÍDA – OUT
DELIMITER $$
CALL Verificar_Quantidade_Produtos(@total);
SELECT @total;
CRIANDO E INVOCANDO STORED PROCEDURES NO MYSQL
Alguns exemplos: PARÂMETRO DE ENTRADA E SAÍDA – INOUT
DELIMITER $$
SET @num = 3;
CALL Elevar_Ao_Quadrado (@num);
SELECT @num;
USANDO VARIÁVEIS NO CORPO DO PROCEDIMENTO
A palavra reservada DECLARE é obrigatória e é a responsável por indicar que uma
variável será declarada com o nome “nome_variavel” (que segue as mesmas regras de
nomeação de variáveis).
O TIPO é o tipo de dados da variável (int, decimal, varchar etc.).
A palavra reservada DEFAULT é opcional e deve ser usada quando se deseja definir um
valor inicial (valor_padrao) para a variável.
A declaração das variáveis deve ser feita logo no início do corpo do procedure, para
aquelas que serão utilizadas em todo o procedimento, ou dentro de um bloco BEGIN-END
específico que limite seu escopo.
O comando DELIMITER é
necessário para que o
MySQL não confunda as
instruções e gere erro.
Se a procedure ao lado
for definida sem
DELIMITER, o MySQL
entenderá que
a mesma termina no
primeiro ";".
STORED
PROCEDURES
STORED
PROCEDURES
STORED
PROCEDURES
EXERCÍCIO 2
EXERCÍCIO 2
• insere_cidade: responsável por inserir uma cidade de acordo com os parâmetros
recebidos
• insere_cidadao: responsável por inserir uma cidadão de acordo com os parâmetros
recebidos e incrementar a população da respectiva cidade.
• lista_cidades: responsável por listar o nome e população de todas as cidades inseridas.
• lista_cidadaos: responsável por listar o nome de todos os cidadãos inseridos e o nome de
sua respectiva cidade.
• exclui_cidade: responsável por excluir a cidade com o id igual ao informado via
parâmetro.
• exclui_cidadao: responsável por excluir o cidadão com o id igual ao informado via
parâmetro e decrementar a população da respectiva cidade.
STORED
PROCEDURES
STORED
PROCEDURES
STORED
PROCEDURES
STORED
PROCEDURES
STORED
PROCEDURES
STORED
PROCEDURES
EXERCÍCIO 3
EXERCÍCIO 3
STORED
PROCEDURES
STORED
PROCEDURES
STORED
PROCEDURES
EXERCÍCIO 4
EXERCÍCIO 4
FUNCTIONS
FUNCTIONS
• Sub-rotinas do tipo função (function) tem estrutura muito parecida com stored
procedures
• A diferença está no fato de que uma function deve retornar um valor (stored procedures
só executam scripts)
• Não precisa de um comando auxiliar para sua chamada (stored procedures usam
CALL), pois podem ser “chamadas” como parte de um comando SQL
• O MySQL conta com várias functions nativas (SUBSTRING(), CURDATE(), TRIM(),
AVG() etc.)
• Muito utilizadas para fazer comparação de dados e retornar valores, executar cálculos,
consultar outras tabelas diferentes de acordo com os parâmetros passados etc.
FUNCTIONS
FUNCTIONS
FUNCTIONS
• Podem ser chamadas/executadas em diversos trechos do script, como na lista de
colunas de um SELECT ou em uma cláusula de WHERE.