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?
- Cos’è il comando PostgreSQL CREATE Function?
- Sintassi del comando PostgreSQL CREATE Function
- Example of PostgreSQL Create Function Command
- Creating a new function
- Creazione di una funzione in PostgreSQL
- PostgreSQL Create Function usando pgAdmin
- 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:
- Creating a function using SQL Shell(psql)
- 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.
- How to Call a user-defined function
- Chiamare una funzione usando la notazione posizionale
- Chiamare una funzione usando la notazione con nome
- Chiamare una funzione usando la notazione mista
- Panoramica
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 |
|
|
|
Function |
|
RETURN |
|
Language plpgsql |
|
Function_body |
|
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:
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.
E, possiamo identificare la funzione get_car_Price() nella lista delle funzioni come possiamo vedere nel seguente screenshot:
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:
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.
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.
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:
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.
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.
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 ‘:=’.
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.
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.
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.