artigo sql magazine 51 - UDFs e Funções Escalares
Artigo da revista SQL Magazine edição 51.
Clique aqui para ler esse artigo em PDF.
SQL
UDFs e Funções Escalares
Trabalhando com funções escalares definidas pelo usuário
A linguagem SQL oferece literalmente dezenas de funções internas que nos ajudam a solucionar problemas de tratamento de dados.
Cada sistema gerenciador de banco de dados (SGBD) oferece uma biblioteca interna de funções específica do produto. Muitas destas funções seguem o padrão ANSI SQL, mas sempre existem pequenas variações de sintaxe, dependendo do SGBD utilizado.
Neste caso, o que o desenvolvedor pode fazer caso a função que ele necessite não exista no seu SGBD?
Um recurso extremamente útil previsto no ANSI SQL é a possibilidade de criação de nossas próprias funções. Estas são as funções definidas pelo usuário, ou UDF, na sigla em inglês.
Neste artigo, vamos abordar a criação e uso das funções escalares criadas pelo usuário.
O que é uma função escalar
Chamamos de função escalar aquela que retorna um único valor como resultado.
Todas as funções internas do SQL mais conhecidas são escalares. Exemplo: SUM, DATEADD, COALESCE, etc. Elas sempre retornam um único valor como resultado.
A mesma idéia vale para as UDFs. Dado um conjunto de parâmetros para uma função escalar, esta deverá retornar um único valor como resultado. Mais do que isso, este resultado será sempre o mesmo para um conjunto de parâmetros (veja a Nota 1 sobre Funções Escalares Determinísticas).
Nota 1. Funções Escalares Determinísticas
Via de regra, as UDFs devem retornar o mesmo resultado quando passamos um dado conjunto de parâmetros para a função.
As funções que se comportam desta maneira são chamadas determinísticas. Porém, uma função pode ser escalar e não ser determinística. Um exemplo é a função interna RAND(), que retorna um número aleatório quando é chamada sem nenhum parâmetro.
O SGBD estudado
Para este trabalho, usamos um banco de dados criado no SQL Server 2005. Portanto, os exemplos que apresentamos neste artigo usam a sintaxe adotada pelo Transact-SQL.
Mas devemos lembrar que UDFs são parte integrante do padrão ANSI SQL e são suportadas pela maioria dos SGBDs disponíveis no mercado.
A sintaxe adotada para criação das funções varia ligeiramente, mas a estrutura geral e a forma de chamada às funções são as mesmas.
Localizando as UDFs
No SQL SERVER 2005, as UDFs são vinculadas ao banco de dados em que são criadas. Dentro do Management Studio, elas são listadas junto de outros objetos programáveis do banco de dados, como procedimentos armazenados e gatilhos. Observe que o nó “Functions” se divide em vários outros nós, sendo um deles específico para as funções escalares, como vemos na Figura 1 (“Scalar-valued Functions”).
Todas as UDFs escalares existentes no banco de dados “Farmaceutico” serão visíveis embaixo deste nó. No exemplo da Figura 1, ainda não criamos nenhuma função, por isso o nó aparece vazio.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo