Como criar uma função PostgreSQL para retornar uma tabela
Quando você tem um banco de dados PostgreSQL e deseja verificar os registros da tabela, usar uma função periodicamente é a maneira mais conveniente, especialmente uma função PostgreSQL que retorna uma tabela em seu conjunto de resultados. Dessa forma, você encapsula seu conjunto de resultados e usar essa abordagem ajuda a organizar melhor o código.
A seguir está a sintaxe para criar uma função PostgreSQL que retorna uma tabela:
CRIAR OU SUBSTITUIR FUNÇÃO function_name(parameter_list)
TABELA DE RETORNOS (lista_colunas)
COMO $$
BEGIN RETURN QUERY(consulta);
FIM;
$$ IDIOMA plpgsql
A vantagem de criar tais funções é que ela permite especificar várias “column_list” em vez de retornar um único valor de sua tabela. Vejamos dois exemplos para nos ajudar a entender quais etapas seguir.
Exemplo 1: Trabalhando com uma única entrada
Ao criar uma função que retorna uma tabela, você deve fornecer o argumento a ser usado com a consulta de retorno. O argumento pode ser um padrão ou uma entrada específica. Este exemplo mostra um caso em que usamos uma única entrada como argumento.
A seguir está a tabela “aluno” que usaremos para nossa consulta:
Na imagem a seguir, criamos uma função chamada “get_student” que recebe um INT como argumento. Na seção RETURNS TABLE, retornamos uma tabela com quatro colunas: “student_id”, “student_name”, “student_faculty” e “current_status”.
Todas essas colunas obtêm seus valores da consulta de retorno que definimos. Observe que a consulta de retorno usa uma instrução WHERE usando a lista de parâmetros que especificamos ao criar a função.
Depois de criar a função, você obterá uma saída semelhante à que tínhamos anteriormente, que confirma que sua função PostgreSQL foi criada com sucesso. Para verificar isso ainda mais, execute o seguinte comando para listar as funções disponíveis:
\df *get_aluno();Adicionamos os asteriscos para corresponder a qualquer função que tenha o nome especificado. A saída mostra que temos nossa função PostgreSQL em nosso banco de dados.
A última etapa é testar a função criada. Execute a instrução “select” para chamar a função. Em seguida, adicione o argumento esperado. Para o nosso caso, o parâmetro é do tipo INT. Assim, adicionamos 1 como nosso argumento para recuperar os registros que correspondem a ele e retornar uma tabela conforme demonstrado a seguir:
Exemplo 2: Trabalhando com um padrão de entrada
Quando não tiver certeza do valor a ser usado com a consulta de retorno, você poderá usar o operador ILIKE para corresponder a um determinado padrão. Por exemplo, se você tem um nome e conhece apenas uma seção da string, o operador ILIKE permite usar o símbolo “%” para definir como será o seu padrão.
Usamos a tabela a seguir para este caso e direcionamos a coluna de nome:
Criamos uma função semelhante à que fizemos anteriormente. No entanto, o tipo de parâmetro mudou e a consulta de retorno usa o operador ILIKE que é adicionado como argumento ao chamar a função.
Assim que a função estiver pronta, podemos chamá-la para retornar a tabela. Existem diferentes maneiras de fazer isso. Por exemplo, se o padrão de pesquisa contiver “Jo” na string, executamos a consulta de comando da seguinte forma:
Selecione * em get_details('%Jo%');Combinamos todos os valores com “Jo” em sua string, dando-nos dois registros.
Se conhecermos apenas a última parte de uma string, distorcemos a consulta e a executamos da seguinte maneira:
Selecione * em get_details('%Tyson');
Por último, se conhecermos a primeira parte da string, adicionamos o símbolo “&” após o padrão, conforme mostrado a seguir:
Selecione * em get_details('Tim%');
Esses são os diferentes exemplos de como usar a função PostgreSQL para retornar uma tabela.
Conclusão
PostgreSQL é um banco de dados poderoso com vários recursos. Ao criar funções, você pode configurá-las para retornar uma tabela como conjunto de resultados por diferentes motivos, incluindo obter encapsulamento. Este post apresentou dois exemplos de criação e utilização de uma função que retorna uma tabela no PostgreSQL.