Funções PostgreSQL

Nesta seção, vamos entender o funcionamento das funções PostgreSQL, criar comando function, e ver o exemplo em tempo real do comando PostgreSQL CREATE FUNCTION usando as diferentes ferramentas do PostgreSQL como pgadmin4 e shell SQL (PSQL).

E veja o exemplo de chamar uma função definida pelo usuário, como a notação posicional chamada notação, a notação mista.

Qual é a função PostgreSQL?

Uma função PostgreSQL ou um procedimento armazenado é um conjunto de comandos SQL e de procedimentos como declarações, atribuições, loops, fluxo de controle, etc. armazenados no servidor de banco de dados e podem ser envolvidos usando a interface SQL. E também é conhecido como PostgreSQL stored procedures.

Podemos criar funções PostgreSQL em linguagens serval, por exemplo, SQL, PL/pgSQL, C, Python etc.

P>Ele nos permite realizar operações, que geralmente tomariam vários comandos e round trips em uma função dentro do banco de dados.

O que é o comando CREATE Function do PostgreSQL?

No PostgreSQL, se quisermos especificar uma nova função definida pelo usuário, podemos usar o comando CREATE FUNCTION.

Sintaxe da função CREATE do PostgreSQL comando

O comando Syntax for PostgreSQL CREATE Function é o seguinte:

Na sintaxe acima, nós utilizamos os seguintes parâmetros, como mostrado na tabela abaixo:

Parameters Description
function_name ul>

  • O parâmetro nome da função é usado para definir o nome da função.
  • The function name is written after the CREATE FUNCTION keyword.
    • We can use the OR REPLACE keyword if we want to change the current function.
    • And it is an optional parameter.
    Function
    • After using the OR REPLACE keyword, we can define the function parameter list that are covered in the parentheses after the Function Name.
    • And a function can contain zero or several parameters.
    RETURN
    • We can define the data type after the RETURN keyword, which we are going to return from the function.
    • It can be a base, composite, or domain type or reference of the type of a table column.
    Language plpgsql
    • It is used to define the name of the Procedural language in which the function is executed.
    • And not just plpgsql, the PostgreSQL supports various procedural languages.
    Function_body
    • The function_body contains the executable parts of the logics.

    Example of PostgreSQL Create Function Command

    Let us see a different example to understand the working of the PostgreSQL CREATE Function command.

    We are taking the Car table from the Javatpoint database, created in the PostgreSQL Tutorial.

    Creating a new function

    In the below command, we are creating a new function, which counts the Cars whose Car_Price between the Price_from and Price_to parameters:

    The get_car_Price function is divided into two main sections, which are Header and Function Body.

    Usamos os seguintes parâmetros na seção Cabeçalho:

    • Price(), que é escrito após a função criar
    • Depois disso, a função get_car_Price() contém dois parâmetros Price_from e Price_to, tendo um datatype inteiro.
    • Então, a função get_car_Price() recupera um número inteiro definido pela condição int de retorno.
    • E no final, usamos a linguagem da função como plpgsql.

    Usamos os seguintes parâmetros na secção Function Body:

    • Usamos a ilustração da stringconstante cotada em dólares na secção function, que começa com $$ e termina com $$.
    • Entre o sinal $$, podemos colocar um bloco, que cobre a declaração e a lógica da função.
    • No bloco de declaração, declaramos uma variável chamada Car_count,que armazena os carros selecionados da seção Carro
    • No corpo do bloco, usamos o comando SELECT INTOcommand para selecionar o Preço dos carros cujos valores estão entre Price_from e Price_to e dar a saída para o Car_count
    • No final do bloco, usamos o comando RETURN para obter o comando

    Criando uma função no PostgreSQL

    No PostgreSQL, podemos criar uma função de duas maneiras:

    • PostgreSQL Create Function usando pgAdmin
    • PostgreSQL Create Function usando SQL Shell

    PostgreSQL Create Function usando pgAdmin

    Vamos seguir o processo abaixo para criar uma função no pgAdmin:

    P>Passo1

    P>Primeiro, vamos abrir a última versão do pgAdmin em nosso sistema local, e iremos para a árvore de objetos e nos conectaremos ao banco de dados de amostras Javatpoint no qual queremos criar uma função.

    P>Passo2

    Após isso, abriremos a ferramenta de consulta clicando em Query tool followed Tools section, como podemos ver na imagem abaixo:

    PoatgreSQL Function2

    Passo3

    Para criar a função get_car_Price1(), usaremos o código acima na ferramenta de consulta e clicaremos no botão Execute.

    Após implementar o comando acima, obteremos a janela de mensagem abaixo mostrando que a função get_car_Price1() foi criada com sucesso em uma base de dados similar.

    PoatgreSQL Function

    E, podemos identificar a função get_car_Price() na lista de funções como podemos ver na seguinte captura de tela:

    PoatgreSQL Function

    Note: Se não conseguirmos identificar o nome da função, podemos clicar com o botão direito do mouse no nó Funções e selecionar Atualizar… menu item to revive the function list:

    PoatgreSQL Function

    Creating a function using SQL Shell(psql)

    We are going to follow the below process to create a table in psql:

    Step1

    • Firstly, we will open the psqlin our local system, and we will connect to the database where we want to create a function.
    • We will create a table in the javatpointdatabase, which we created earlier in the PostgreSQL tutorial.

    Step2

    • For connecting a database, we will enter the below command:

    Output

    After executing the above command, we will get the following output:

    PoatgreSQL Function

    Note: If we enter a similar command as above to create a function, in psql, it will issue the below error that is: the function get_car_price already exists with the same argument types.

    PoatgreSQL Function

    Therefore, to resolve this error, we create a new function as get_car_Price1() in the next step.

    Step3

    We will enter the below command to create a function as get_car_Price1() in the javatpoint database.

    Output

    We will get the following output on implementing the above command, which displays that the get_car_Price_count1() function has been created successfully.

    PoatgreSQL Function

    Step4

    We can use the below command to list all user-defined functions in the existing database.

    Output

    After executing the above command, we will get the below output:

    PoatgreSQL Function

    How to Call a user-defined function

    In PostgreSQL, we can call the user-defined function in three ways, which are as follows:

    • Notação posicional
    • Notação nomeada
    • A notação mista

    Chamar uma função usando notação posicional

    Se quisermos descrever os argumentos numa ordem semelhante como parâmetros, podemos chamar uma função com a ajuda da notação posicional.

    Deixe-nos ver um exemplo para entender a notação posicional trabalhando para chamar uma determinada função.

    No exemplo abaixo, os argumentos get_car_price() são 26000 e 70000, o que é equivalente aos parâmetros Price_from e Price_to.

    Output

    Obteremos a seguinte saída ao implementar o comando acima, que recupera aquelas quatro linhas cujo car_price está entre 26000 e 70000.

    PoatgreSQL Function

    Quando a função quase não tem parâmetros, podemos chamar uma função com a ajuda da notação posicional.

    Se a função contém vários parâmetros, podemos usar a notação nomeada para chamar a função em particular, porque usar a notação nomeada tornará a chamada da função mais compreensível.

    Chamar uma função usando a notação nomeada

    No exemplo abaixo, estamos exibindo o trabalho de chamar a função get_car_Price() usando a notação nomeada:

    Output

    Obteremos a seguinte saída ao executar o comando acima, que exibe quatro linhas baseadas na faixa acima do car_price.

    Função PoatgreSQL

    Na notação mencionada anteriormente, usamos a => para distinguir o nome e o valor do argumento.

    PostgreSQL permite a sintaxe mais antiga criada em := para a compatibilidade retroativa, como podemos ver no seguinte comando:

    Output

    Após a execução do comando acima, obteremos uma saída semelhante em relação ao resultado do comando acima onde usamos o ‘=>’ em vez de ‘:=’.

    Função PoatgreSQL

    Chamar uma função usando a notação mista

    É o agrupamento de notações posicionais e nomeadas.

    Deixe-nos ver um exemplo para entender o funcionamento da função chamando uma função usando notação mista.

    Na notação mista, não podemos usar os Parâmetros nomeados antes dos Parâmetros Posicionais.

    Por exemplo:

    No comando abaixo, vamos usar a noção nomeada para o parâmetro Price_from como Price_from=>26000, enquanto que para o parâmetro Price_to, usamos a noção posicional como 70000, como podemos ver no comando abaixo:

    Output

    Após executar o comando acima, o PostgreSQL levanta um erro, que diz que o argumento posicional não pode seguir o argumento nomeado.

    Função PoatgreSQL

    Para resolver o erro acima, estamos usando a notação posicional e nomeada para a função get_car_price() onde o 26000 é usado para representar a notação Posicional; por outro lado, Price_to=>70000 é usado para representar a notação nomeada:

    Output

    Após executar o comando acima, obteremos a saída abaixo, que retorna aqueles carros cujo preço do car_price está entre 26000 e 70000.

    PoatgreSQL Function

    Overview

    Na seção de funções do PostgreSQL, aprendemos os seguintes tópicos:

    • Utilizamos o comando CREATE Functioncommand para criar uma função definida pelo usuário para a tabela em particular.
    • Entendemos o processo de chamar uma função definida pelo usuário com a ajuda de diferentes notações como Posicional, Nomeado e Misto.

    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *