Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo SQL Magazine 64 - Utilizando Stored Functions no MySQL
Artigo publicado Revista SQL Magazine 64.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?

![]()
Utilizando Stored Functions no MySQL
Criando, excluindo e aplicando funções definidas pelo usuário no desenvolvimento de sistemas com um banco de dados MySQL
Muitas vezes, quando iniciamos o desenvolvimento de uma aplicação para atingir determinado objetivo, não nos atentamos quanto à modularidade dos componentes de software que serão utilizados durante todo o processo de engenharia do sistema. Sabemos muito bem que quanto maior a modularidade dos componentes, maior também o reaproveitamento de código já escrito, seja na aplicação, por meio das melhores práticas do paradigma de orientação a objetos, seja através de funções. O que devemos pensar quando participamos da definição da arquitetura de um novo sistema ou software é tornar as coisas o mais simples possível e assim, mais fáceis.
No caso de aplicações que se conectam a servidores de bancos de dados mais robustos, como no caso do MySQL, administradores de bancos de dados e/ou desenvolvedores de sistemas já podem estar atentos em criar componentes modulares, armazenando programas que retornam ou não um valor em meio à operações do sistema.
Segundo Roger Pressman, modularidade é a independência funcional dos componentes do programa. Cada componente pode ser desenvolvido para desempenhar processamentos específicos, retornar um determinado resultado com base em entradas ou manipulações de dados, tratamento de determinados tipos de informação e até validar dados de acordo com determinadas regras do negócio. Os componentes são desenvolvidos e estão disponíveis para serem aninhados dentro de outros novos.
A partir da versão 4.1 do MySQL já é possível utilizar as Stored Routines (Stored Procedures e Functions) para dividir o processamento de forma modular.
Neste artigo focaremos apenas na utilização de Stored Functions no MySQL (verifique se a sua versão é superior ou igual à versão 5.0). Mais especificamente, exibiremos como utilizar as funções definidas pelo usuário, as chamadas Stored Functions de maneira modular, buscando agilidade no desenvolvimento de sistemas, economia na escrita de código, colocando a lógica também por conta do banco de dados, dando mais segurança aos componentes que manipulam dados e produzem informações, facilitar a manutenção e minimizar o consumo de banda entre o servidor de banco de dados MySQL e a sua aplicação. Além disso, ao longo deste artigo, estruturaremos juntos, passo-a-passo, um estudo de caso para direcionar todos os exemplos práticos que teremos que explorar as Stored Routines (Stored Functions e Stored Procedures).
Stored Routines no MySQL
Stored Routines são programas armazenados dentro do servidor MySQL, obrigatoriamente vinculados a algum banco de dados que podem retornar ou não algum resultado. Stored Routines são as Stored Procedures e as Stored Functions, e podem ser verificadas através do dicionário de dados INFORMATION_SCHEMA, consultando a tabela ROUTINES, como mostra a Listagem 1.
Listagem 1. Exibindo as Stored Routines existentes em um servidor MySQL
mysql> SELECT ROUTINE_NAME
-> FROM INFORMATION_SCHEMA.ROUTINES;
+-----------------------+
| ROUTINE_NAME |
+-----------------------+
| fn_checa_categoria |
| fn_data_converte |
| fn_email |
+-----------------------+
3 rows in set (0.03 sec)
Uma Stored Procedure pode retornar ou não um resultado. Quando invocada através da declaração CALL, executa manipulações em dados ou processa o retorno de dados de tabelas de um ou mais bancos de dados. Dentro destas, podemos utilizar de user variables e local variables para armazenar valores que podemos utilizar mais tarde, dentro do seu processamento. Assim como os tipos de variáveis citados, podemos utilizar também os comandos de transação (START TRANSACTION - COMMIT - ROLLBACK), estruturas condicionais como IF-THEN-ELSE e CASE e tratamento de erros.
Já uma Stored Function sempre e obrigatoriamente retornará um valor para a rotina que a invoca ou outras Stored Routines que a excuta. Sendo assim, uma Stored Function utilizada em meio a expressões podem ser consideradas como constantes, uma função do próprio MySQL ou uma referência a uma coluna de uma tabela. Uma Stored Function não pode ser invocada através da declaração CALL, assim como uma Stored Procedure"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Wagner Bianchi
Wagner Bianchi é Tecnólogo em Gerenciamento de Bancos de Dados pela Faculdade Infórium de Tecnologia, Pós-Graduando em Administração Estratégica de Empresas (Executivo Jr.) pela Fundação Getúlio Vargas no Minas Business Institute, Consultor em Desenvolvimento de Sistemas pela INFODBA C&T, empresa on...



