Funzioni PostgreSQL

In questa sezione, capiremo il funzionamento delle funzioni PostgreSQL, il comando crea funzione, e vedremo l’esempio in tempo reale del comando CREATE FUNCTION di PostgreSQL usando i diversi strumenti di PostgreSQL come pgadmin4 e SQL shell (PSQL).

E vedere l’esempio di chiamare una funzione definita dall’utente come la notazione posizionale chiamata notazione, la notazione mista.

Che cos’è la funzione PostgreSQL?

Una funzione PostgreSQL o una stored procedure è un insieme di comandi SQL e procedurali come dichiarazioni, assegnazioni, loop, flow-of-control ecc. memorizzati sul server del database e possono essere coinvolti utilizzando l’interfaccia SQL. Ed è anche conosciuto come PostgreSQL stored procedures.

Possiamo creare funzioni PostgreSQL in vari linguaggi, per esempio, SQL, PL/pgSQL, C, Python ecc.

Ci permette di eseguire operazioni, che generalmente richiederebbero vari comandi e giri in una funzione all’interno del database.

Cos’è il comando PostgreSQL CREATE Function?

In PostgreSQL, se vogliamo specificare una nuova funzione definita dall’utente, possiamo usare il comando CREATE FUNCTION.

Sintassi del comando PostgreSQL CREATE Function

La sintassi del comando PostgreSQL CREATE Function è la seguente:

Nella sintassi sopra, abbiamo usato i seguenti parametri, come mostrato nella tabella sottostante:

Parametri Descrizione
nome_funzione
  • Il parametro nome della funzione è usato per definire il nome della funzione.
  • 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.

Abbiamo utilizzato i seguenti parametri nella sezione Header:

  • Primariamente, specifichiamo il nome della funzione come get_car_Price(), che è scritto dopo la funzione create
  • Dopo di che, la funzione get_car_Price() contiene due parametri Price_from e Price_to, aventi tipo di dati interi.
  • Poi, la funzione get_car_Price() recupera un intero definito dalla condizione return int.
  • E alla fine, abbiamo utilizzato il linguaggio della funzione come plpgsql.

Abbiamo usato i seguenti parametri nella sezione del corpo della funzione:

  • Abbiamo usato l’illustrazione stringa-costante tra virgolette di dollaro nella sezione della funzione, che inizia con $$ e finisce con $$.
  • Tra il segno $$, possiamo mettere un blocco, che copre la dichiarazione e la logica della funzione.
  • Nel blocco di dichiarazione, abbiamo dichiarato una variabile chiamata Car_count, che memorizza le auto selezionate dal Car
  • Nel corpo della sezione del blocco, abbiamo usato il comando SELECT INTO per selezionare il prezzo delle auto i cui valori sono tra Price_from e Price_to e dare l’output a Car_count
  • Alla fine del blocco, abbiamo usato il comando RETURN per ottenere il

Creazione di una funzione in PostgreSQL

In PostgreSQL, possiamo creare una funzione in due modi:

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

PostgreSQL Create Function usando pgAdmin

Per creare una funzione in pgAdmin seguiremo il seguente processo:

Step1

Prima di tutto, apriremo l’ultima versione di pgAdmin nel nostro sistema locale, e andremo nell’albero degli oggetti e ci connetteremo al database di esempio Javatpoint in cui vogliamo creare una funzione.

Step2

Dopo di che, apriremo lo strumento di query cliccando su Query tool seguito da Tools, come possiamo vedere nello screenshot sottostante:

PoatgreSQL Function2

Step3

Per creare la funzione get_car_Price1(), useremo il codice di cui sopra nello strumento di query e clicchiamo sul pulsante Execute.

Dopo aver eseguito il comando di cui sopra, otterremo la seguente finestra di messaggio che mostra che la funzione get_car_Price1() è stata creata con successo in un database simile.

Funzione di PotogreSQL

E, possiamo identificare la funzione get_car_Price() nella lista delle funzioni come possiamo vedere nel seguente screenshot:

Funzione di PotogreSQL

Nota: Se non possiamo identificare il nome della funzione, possiamo cliccare col tasto destro del mouse sul nodo Funzioni e selezionare Refresh… 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:

  • Notazione posizionale
  • Notazione nominativa
  • La notazione mista

Chiamare una funzione usando la notazione posizionale

Se vogliamo descrivere gli argomenti in un ordine simile ai parametri, possiamo chiamare una funzione con l’aiuto della notazione posizionale.

Vediamo un esempio per capire la notazione posizionale che funziona per chiamare una funzione particolare.

Nell’esempio seguente, gli argomenti di get_car_price() sono 26000 e 70000, che è equivalente ai parametri Price_from e Price_to.

Output

Attuando il comando di cui sopra, otterremo il seguente output, che recupera le quattro righe il cui prezzo_auto è compreso tra 26000 e 70000.

PoatgreSQL Function

Quando la funzione non ha parametri, possiamo chiamare una funzione con l’aiuto della notazione posizionale.

Se la funzione contiene diversi parametri, possiamo usare la notazione nominale per chiamare la funzione particolare perché usando la notazione nominale la chiamata della funzione sarà più comprensibile.

Chiamare una funzione usando la notazione con nome

Nell’esempio seguente, stiamo mostrando il funzionamento della chiamata della funzione get_car_Price() usando la notazione con nome:

Output

Otterremo il seguente output eseguendo il comando di cui sopra, che visualizza quattro righe basate sull’intervallo di car_price.

Funzione di PostgreSQL

Nella notazione menzionata prima, abbiamo usato il => per distinguere il nome e il valore dell’argomento.

PostgreSQL permette la vecchia sintassi creata su := per la compatibilità all’indietro, come possiamo vedere nel seguente comando:

Output

Dopo aver eseguito il comando di cui sopra, otterremo un output simile rispetto al risultato del comando precedente dove usiamo il ‘=>’ invece di ‘:=’.

Funzione PathgreSQL

Chiamare una funzione usando la notazione mista

È il raggruppamento di notazioni posizionali e nominative.

Vediamo un esempio per capire il funzionamento della funzione Calling a function using mixed notation.

Nella notazione mista, non possiamo usare i parametri nominati prima dei parametri posizionali.

Per esempio:

Nel comando seguente, useremo la nozione nominale per il parametro Price_from come Price_from=>26000, mentre per il parametro Price_to, abbiamo usato la nozione posizionale come 70000, come possiamo vedere nel comando seguente:

Output

Dopo l’esecuzione del comando precedente, PostgreSQL solleva un errore, che dice che l’argomento posizionale non può seguire l’argomento nominato.

Funzione di PostgreSQL

Per risolvere l’errore di cui sopra, stiamo usando la notazione posizionale e nominativa per la funzione get_car_price() dove 26000 è usato per rappresentare la notazione posizionale; d’altra parte, Price_to=>70000 è usato per rappresentare la notazione nominativa:

Output

Dopo aver eseguito il comando di cui sopra, otterremo il seguente output, che restituisce le auto il cui car_price è compreso tra 26000 e 70000.

Funzione PostgreSQL

Panoramica

Nella sezione sulle funzioni PostgreSQL, abbiamo imparato i seguenti argomenti:

  • Abbiamo usato il comando CREATE Function per creare una funzione definita dall’utente per una particolare tabella.
  • Abbiamo capito il processo di chiamata di una funzione definita dall’utente con l’aiuto di diverse notazioni come Positional, Named e Mixed.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *