De que se trata o artigo

Neste artigo, vamos abordar a criação e uso de stored functions em PostgreSQL que retorna um conjunto de registros, uma prática que pode ser muito útil, porém pouco utilizada, seja por falta de conhecimento ou experiência ou ainda por ser nativa do banco de dados.

Em que situação o tema útil

O tema discutido neste artigo é útil para todos aqueles que tenham interesse em conhecer de perto o recurso de stored functions no PostgreSQL. Embora muito útil, este recurso muitas vezes não é utilizado por desconhecimento.

Resumo DevMan

Veremos neste artigo algumas das possibilidades no uso de stored function que retorna um conjunto de registros, como utilizá-las como uma visão de banco de dados (view) retornando dados de uma consulta SQL, ou retornando dados calculados sem necessidade de existência de uma tabela, ou ainda chamando funções dentro de outras.

Stored functions são métodos de banco de dados contendo um código-fonte programado por alguém, geralmente um programador ou DBA, que ficam guardados no banco de dados e que podem ser chamados, executados e/ou acessados diretamente a partir do banco de dados. Esta funcionalidade está presente em praticamente todos os SGBDs e possui aplicabilidades diversas, como: fazer cálculos específicos, codificar, formatar e decodificar textos, retornar um conjunto de registros, etc.

Tais funções podem retornar vários tipos de dados, simples ou complexos, ou até mesmo podendo retornar um conjunto de registros, como mencionado anteriormente. O conjunto de registros é visualizado em forma de listas de dados, exatamente como é mostrado no resultado de uma consulta SQL, porém também podem ser mostrados dados que não precisam ser derivados de tabelas, como acontece nas consultas SQL.

Neste artigo, vamos abordar a criação e uso de stored functions em PostgreSQL que retorna um conjunto de registros, uma prática que pode ser muito útil, porém pouco utilizada, seja por falta de conhecimento ou experiência ou ainda por ser nativa do banco de dados. Neste artigo iremos demonstrar alguns exemplos que irão facilitar o entendimento das Stored Functions que retornam um conjunto de registros, mas antes é preciso entender como é o escopo de uma stored function no PostgreSQL.

Uma função é formada por um cabeçalho, um escopo principal e um rodapé. Estas partes contêm informações específicas, como: nome, tipo de retorno, declarações de variáveis, o código propriamente dito, o tipo de linguagem utilizada, etc.

O cabeçalho é a parte onde definimos o nome da função, os parâmetros de entrada e o tipo de retorno/saída da função. O nome da função é dado de acordo com a preferência do criador ou desenvolvedor da função. Os parâmetros de entrada, que podem ser: nenhum, um ou vários, e de tipos definidos pelo desenvolvedor, que podem ser utilizadas dentro do escopo principal como constantes (variáveis que possuem um valor definido e que não podem ser alterados). Já o retorno/saída da função delimita que tipo de dado será retornado ao ser executada. Esses tipos podem variar desde tipos primitivos – número, lógico, texto, etc. – a tipos complexos de dados – conjunto de registros, tipos criados, vetores, etc.

O escopo principal é a parte onde declaramos as variáveis que serão utilizadas durante a execução da função e também é onde programamos em uma linguagem escolhida (plPgSQL, SQL, Perl, C, etc.) o que acontecerá na função, ou seja, a parte principal, como o próprio nome já diz.

No rodapé fica a parte onde fechamos a função e especificamos qual linguagem de programação foi utilizada no escopo principal. Geralmente a linguagem escolhida é a plPgSQL – nativa do PostgreSQL –, mas isso depende muito da finalidade, mas esta mesma será utilizada neste artigo.

Para fazermos comentários de linha no código da função, basta utilizar os caracteres "--" (sem as aspas) antes de iniciar o comentário e qualquer texto. Utilizaremos comentários de linha nos exemplos do artigo para explicar algo referente ao código-fonte da stored function.

A Listagem 1 ...

Quer ler esse conteúdo completo? Tenha acesso completo