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

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

Utilizando funções escalares

Agora que já sabemos criar funções, vamos exemplificar duas formas de executá-las, imprimindo seu resultado na tela. Observe os comandos ilustrados no destaque a seguir e, na Figura 9, a resposta do SGBD à sua execução.

AخA
1
mysql> SELECT Total_Vendas();
2
mysql> SELECT Total_Vendas2(3);
3
mysql> SET @Total = Total_Vendas();
4
mysql> SELECT @Total;

 

Figura 09 - Tela do MySQL após diversos comandos SELECT e SET.
Tela do MySQL  após diversos comandos SELECT e SET.
Fonte: MySQL 5.7 Command Line Client

Os dois primeiros exemplos utilizam o comando SELECT para imprimir na tela o resultado das funções Total_Vendas() e Total_Vendas2(), sendo passado nesta última o parâmetro 3, ou seja, se deseja saber o número de itens vendidos do produto de código igual a 3. Resultado similar pode ser obtido utilizando o comando SET para atribuir o resultado de uma função a uma variável e em seguida imprimindo o mesmo na tela usando SELECT. Observe que nesse caso o SGBD reconhece que uma variável está sendo definida pela inserção do caractere “@” antes do seu nome e que não é necessário associar um tipo específico a ela, sendo uma forma alternativa de se definir uma variável.

Embora já saibamos como criar uma função e obter o resultado da sua execução, ainda não mostramos como ela pode ser utilizada na manipulação de dados num SGBD. Para isso, vamos exemplificar a seguir, dois casos de uso da função Total_Vendas2() criada anteriormente.

x
1
mysql> SELECT prod_codigo AS Codigo, prod_nome AS Nome,
2
    Total_Vendas2(prod_codigo) AS Vendas
3
    FROM produtos
4
    ORDER BY prod_codigo;
5
6
mysql> SELECT prod_codigo AS Codigo, prod_nome AS Nome,
7
    Total_Vendas2(prod_codigo) AS Vendas
8
    FROM produtos
9
    WHERE Total_Vendas2(prod_codigo) >= 15
10
    ORDER BY prod_codigo;

No primeiro exemplo, a função Total_Vendas2() é usada numa consulta para gerar as linhas de uma coluna denominada Vendas, mostrando assim o total de vendas de cada produto associado a tabela produtos. No segundo exemplo, temos um caso similar, porém, a função também é utilizada na cláusula WHERE para filtrar os produtos com venda superior ou igual a 15 unidades. A Figura 10 apresenta o resultado das consultas anteriores ao serem processadas no MySQL.

Figura 10 - Tela do MySQL após diversos comandos SELECT utilizando a função Total_Vendas2().
Tela do MySQL após diversos comandos SELECT utilizando a função Total_Vendas2().
Fonte: MySQL 5.7 Command Line Client

Finalmente, para excluir uma função do banco de dados, você deve utilizar o comando DROP FUNCTION, o qual tem sua sintaxe descrita no destaque a seguir. E a resposta do SGBD a esse comando aplicado nas funções criadas anteriormente é ilustrada na Figura 11.

1
1
mysql>DROP FUNCTION  nome_da_funcao;
Figura 11 - Tela do MySQL após os comandos DROP FUNCTION.
Tela do MySQL após os comandos DROP FUNCTION.
Fonte: MySQL 5.7 Command Line Client
play_circle_filled
Vídeo 05 - Funções: Estrutura de Controle Condicional

Versão 5.3 - Todos os Direitos reservados