Come creare la funzione definita dall'utente postgreSQL

Come creare la funzione definita dall'utente postgreSQL
“Quando richiede l'esecuzione di molte istruzioni SQL più volte, è meglio scrivere una funzione o una procedura PostgreSQL definita dall'utente con tali istruzioni SQL. Rimuove il codice duplicato e riutilizza il codice chiamando la funzione da diverse applicazioni. Il modo di creare e utilizzare diversi tipi di funzioni definite dall'utente PostgreSQL è stato mostrato in questo tutorial."

Sintassi

La sintassi della funzione PostgreSQL è riportata di seguito.

Crea o sostituisci la funzione function_name (argomenta_list)
Returns return_type come $ variabile_name $
DICHIARARE
dichiarazione;
[…]
INIZIO

[…]
Return variabile_name | valore
FINE;
Language plpgsql;
  • Creare la parola chiave viene utilizzata per creare una nuova funzione definita dall'utente e sostituire la parola chiave viene utilizzata per modificare la funzione esistente.
  • Il nome della funzione è definito da funzione_name e la funzione può richiedere uno o più argomenti. Nella funzione possono essere utilizzati tre tipi di argomenti. Questi sono IN, FUORI, E DENTRO FUORI. L'argomento predefinito della funzione è IN discussione. Viene utilizzato per passare il valore nella funzione e non può essere modificato all'interno della funzione. IL FUORI L'argomento viene utilizzato per restituire il valore dalla funzione. IL DENTRO FUORI L'argomento può essere utilizzato per passare il valore alla funzione e restituire il valore dalla funzione. Può essere riassegnato all'interno della funzione come L'esterno discussione.
  • Il tipo di dati della variabile che verrà restituita dalla funzione viene menzionato dopo la parola chiave di restituzione.
  • Il corpo della funzione inizierà con la parola chiave dichiara, in cui verranno dichiarate le variabili necessarie. Successivamente, le istruzioni SQL richieste saranno definite all'interno dei blocchi di inizio e fine.
  • Il nome della lingua procedurale è definito dopo la parola chiave della lingua in cui verrà eseguita la funzione.

Prerequisiti

UN. Installa il postgreSQL

È necessario installare l'ultima versione dei pacchetti PostgreSQL sul sistema operativo Linux prima di eseguire le istruzioni SQL mostrate in questo tutorial. Esegui i seguenti comandi per installare e avviare PostgreSQL:

$ sudo apt-get -y installa postgresql postgresql-confrib
$ sudo systemctl Inizia postgresql.servizio

Esegui il seguente comando per accedere a PostgreSQL con il privilegio di root.

$ sudo -u postgres psql

B. È possibile creare un database chiamato "Testdb" eseguendo la seguente istruzione SQL.

# Crea test Database TestDB;

Se vuoi creare una tabella in testdb database, quindi devi digitare "\C" Per modificare il database. Ma in questo tutorial, non ho modificato il database e la tabella e tutte le funzioni sono state create nel database predefinito denominato Postgres.

C. Crea una tabella denominata prodotti con quattro campi e inserire quattro record nella tabella per testare le funzioni definite dall'utente che verranno create più avanti in questo tutorial.

# Crea prodotti da tavolo (
Chiave primaria seriale ID,
Nome varchar (30),
digitare varchar (20),
Prezzo denaro);

D. Inserire quattro record nella tabella.

# Inserisci i prodotti (nome, tipo, prezzo)
Valori ('samsung a40', 'mobile', 300),
('A4', 'Mouse', 20),
('Sony 42 "', 'TV', 1000),
('Samsung 3TB', 'HDD', 600);

Diversi esempi di funzioni definite dall'utente di PostgreSQL

Gli usi delle funzioni definite dall'utente con argomento e senza argomento in PostgreSQL sono stati mostrati di seguito utilizzando più esempi.

Esempio-1: funzione definita dall'utente senza argomento e valore di restituzione

Esegui la seguente istruzione SQL per creare una funzione denominata function1 () senza alcun argomento e la funzione non restituirà nulla. La funzione aggiornerà il record della tabella dei prodotti in cui il valore ID è 3 dopo l'esecuzione.

# Crea o sostituisci la funzione funzione1 ()
Restituisce vuoto come
$$
INIZIO
--Aggiorna il valore del prezzo del terzo record
Aggiorna i prodotti impostare il prezzo = 1500 dove id = 3;
FINE;
$$
Lingua 'plpgsql';

Verrà visualizzato il seguente output se la funzione viene creata correttamente in Postgres Banca dati.

Eseguire la seguente istruzione SQL per leggere tutti i record del prodotti Tabella prima di eseguire function1 ().

# Seleziona * dai prodotti;

Il seguente output mostra i record inseriti del prodotti tavolo.

Esegui la seguente istruzione SQL per eseguire la funzione.

# Seleziona funzione1 ();


Il seguente output mostra che una riga è interessata chiamando la funzione function1 (). Il valore del campo di prezzo della tabella verrà aggiornato in cui il valore ID è 3.

Eseguire la seguente istruzione SQL per leggere tutti i record del prodotti Tabella dopo l'esecuzione function1 ().

# Seleziona * dai prodotti;

Il seguente output mostra che il valore del prezzo della tabella dei prodotti è stato aggiornato in cui il valore ID è 3 ed è ora 1500.

Esempio 2: funzione definita dall'utente con in argomento

L'argomento predefinito della funzione è in argomento. Esegui la seguente istruzione SQL per creare una funzione denominata funzione2 () con due argomenti e la funzione non restituirà nulla. La funzione inserirà un nuovo record a prodotti Tabella con i valori degli argomenti.

# Crea o sostituisci funzione funzione2 (nome varchar, digita varchar, prezzo int)
Restituisce vuoto come
$$
INIZIO
--Inserisci un nuovo record
Inserisci i prodotti (nome, tipo, prezzo)
Valori (nome, tipo, prezzo);
FINE;
$$
Lingua 'plpgsql';


Verrà visualizzato il seguente output se la funzione viene creata correttamente in Postgres Banca dati.

Esegui la seguente istruzione SQL per eseguire la funzione tre nei valori degli argomenti. Questi sono "iPhone", "mobile" e 2000.

# Seleziona funzione 2 ("iPhone", "mobile", 2000);

Il seguente output mostra che una riga è interessata chiamando la funzione funzione2 (), e un nuovo record verrà inserito nel tavolo.

Eseguire la seguente istruzione SQL per leggere tutti i record del prodotti Tabella dopo l'esecuzione funzione2 ().

# Seleziona * dai prodotti;

Il seguente output mostra che un nuovo record è stato inserito nel prodotti tavolo.

Esempio-3: funzione definita dall'utente senza argomento

L'argomento Out viene utilizzato per restituire il valore dalla funzione. Esegui la seguente istruzione SQL per creare una funzione denominata function3 () con un argomento fuori dal tipo di moneta e la funzione restituirà i dati del tipo di moneta. La funzione restituirà il valore assegnato dell'argomento OUT.

# Crea o sostituisci la funzione funzione3 (prezzo di denaro)
Restituisce denaro come
$$
INIZIO
--Assegna un valore all'argomento
Prezzo: = 1000;
FINE;
$$
Lingua 'plpgsql';


Verrà visualizzato il seguente output se la funzione viene creata correttamente in Postgres Banca dati.

Esegui la seguente istruzione SQL per eliminare i record dalla tabella dei prodotti in base al valore restituito dalla funzione3 ().

# Elimina dai prodotti in cui il prezzo <= function3();


Il seguente output mostra che tre righe sono interessate chiamando la funzione function3 (). Il valore restituito della funzione è 1000, che corrisponde ai tre record del prodotti tavolo dove il id i valori sono 1, 2, E 4.

Eseguire la seguente istruzione SQL per leggere tutti i record del prodotti Tabella dopo l'esecuzione function3 (). L'output mostra che esistono due record nella tabella in cui il prezzo I valori sono più di 1000.

# Seleziona * dai prodotti;

Il seguente output mostra che 3 record sono stati eliminati da prodotti tavolo.

Esempio-4: funzione definita dall'utente con argomento inout

L'argomento inout viene utilizzato nella funzione per passare i valori nella funzione e restituire i valori dalla funzione. Esegui la seguente istruzione SQL per creare una funzione denominata calcolare() con un argomento inout di tipo float e un argomento di tipo intero. La funzione restituirà i dati di tipo float. La funzione verrà eseguita con l'importo delle vendite, che sarà un valore fluttuante e lo sconto, che sarà un numero intero. L'importo delle vendite dopo lo sconto verrà calcolato in base ai valori degli argomenti. Successivamente, l'importo di vendita calcolato verrà restituito dalla funzione utilizzando l'argomento OUT.

# Crea o sostituisci la funzione Calcola (
Sales_amount inout float, sconto int)
Restituisce il galleggiante come
$$
INIZIO
--Calcola l'importo dello sconto
Sales_AMOUNT: = Sales_AMOUNT - (Sales_Amount*Sconto/100);
FINE;
$$
Lingua 'plpgsql';

Verrà visualizzato il seguente output se la funzione viene creata correttamente in Postgres Banca dati.

Esegui la seguente dichiarazione per eseguire la funzione con 10000 come importo di vendita e 5 come importo di sconto

#Select Calcola (10000, 5) come sconto_amount;

Il 5% di 10000 è 500 e 10000-500 = 9500. Il seguente output mostra l'importo delle vendite dopo uno sconto del 5%.

Esempio-5: utente-Definato Funzione con IL Dichiarazione condizionale

Esegui la seguente istruzione SQL per creare una funzione denominata Search_product () con un argomento e la funzione restituirà i dati del tipo Varchar. Il modo di dichiarare la variabile della funzione e l'utilizzo dell'istruzione condizionale è stato mostrato in questa funzione. La variabile funzione denominata nome del prodotto è stato definito con il Nome tipo di prodotti tavolo. Il valore di in argomento, tp, sarà abbinato al valore del tipo campo del prodotti tavolo. Se non viene trovata alcuna corrispondenza nella tabella, verrà sollevato un errore con il messaggio, "il tipo di prodotto non esiste". Se viene trovata una corrispondenza, allora il valore del Nome Il campo di quel tipo di prodotto verrà memorizzato nella variabile funzione e la variabile verrà restituita dalla funzione.

# Crea o sostituisci la funzione Search_Product (TP Varchar)
Restituisce varchar come
$$
DICHIARARE
Product_name Products.Nome%Tipo;
INIZIO
-- Cerca il nome del prodotto in base al tipo
Seleziona il nome in Product_Name
Dai prodotti
Dove prodotti.Type = tp;
Se non trovato, allora
Raccogli il tipo di prodotto non esiste.';
FINISCI SE;
Restituire Product_name;
FINE;
$$
Lingua 'plpgsql';

Verrà visualizzato il seguente output se la funzione viene creata correttamente in Postgres Banca dati.

Esegui la seguente istruzione SQL per leggere tutti i record dalla tabella dei prodotti.

# Seleziona * dai prodotti;

Esegui la seguente istruzione SQL per eseguire la funzione Search_Product () con il tipo di prodotto "Mobile".

# Seleziona search_product ('mobile');

Esegui la seguente istruzione SQL per eseguire la funzione Search_Product () con il tipo di prodotto "AC".

# Seleziona Search_Product ('AC');

Il seguente output mostra che il prodotti La tabella contiene due record di valori di tipo, "tv" E "Mobile". L'output della prima esecuzione della funzione è restituito "iphon" perché il tipo di prodotto "mobile" esiste nella tabella. L'output della seconda esecuzione della funzione ha restituito un messaggio di errore perché il tipo di prodotto "AC" non esiste nella tabella.

Esempio-6: funzione definita dall'utente con funzione aggregata

Qualsiasi funzione aggregata supportata da SQL può essere utilizzata nella funzione PostgreSQL. Esegui la seguente istruzione SQL per creare una funzione denominata count_product () senza alcun argomento e la funzione restituirà i dati del tipo intero. La funzione aggregata Count () è stata utilizzata nella funzione utilizzata per contare il numero di righe in base alla condizione specifica. Qui, una variabile di funzione denominata Total_Product è stata dichiarata nella funzione per archiviare il valore di ritorno della funzione Count (). La funzione Count () è stata utilizzata nella query Seleziona per contare quei record in cui il nome del prodotto inizia con la parola "Sony".

# Crea o sostituisci le funzioni count_product ()
Restituisce int as
$$
DICHIARARE
total_product int;
INIZIO
--Conta il numero totale del prodotto particolare
Seleziona Conteggio (*) in Total_Product dai prodotti
Dove nome come "Sony%";
Restituire total_product;
FINE;
$$
Language plpgsql;

Verrà visualizzato il seguente output se la funzione viene creata correttamente in Postgres Banca dati.

Esegui il comando seguente per eseguire la funzione, count_product ().

# Seleziona conte_product ();

Il seguente output mostra che la funzione Count () restituisce il valore 1 perché esiste un solo record che corrisponde al valore, "Sony".

Conclusione

Lo scopo di utilizzare le funzioni postgreSQL e diversi modi di utilizzare le funzioni postgreSQL con argomenti in, out e inout sono stati descritti in questo tutorial creando più funzioni PostgreSQL. L'argomento in viene utilizzato per prendere valore nella funzione. L'argomento Out viene utilizzato per restituire il valore dalla funzione. L'argomento inout viene utilizzato per prendere il valore di input nella funzione e restituire l'output dalla funzione. La funzione può essere creata senza alcun argomento. Spero che l'utente sia in grado di creare e utilizzare correttamente la funzione PostgreSQL dopo aver letto questo tutorial.