I denne delen skal vi forstå virkemåten til PostgreSQL-funksjoner, lag funksjon kommando, og se sanntidseksemplet på PostgreSQL CREATE FUNCTION kommando ved å bruke de forskjellige verktøyene til PostgreSQL som f.eks pgadmin4 og SQL-skall (PSQL).
Og se eksempelet på å kalle en brukerdefinert funksjon som for eksempel posisjonell notasjon kalt notasjon, den blandede notasjonen.
Hva er PostgreSQL-funksjonen?
En PostgreSQL-funksjon eller en lagret prosedyre er et sett med SQL og prosedyrekommandoer som f.eks erklæringer, oppdrag, loops, flow-of-control etc. lagret på databaseserveren og kan involveres ved hjelp av SQL-grensesnitt . Og det er også kjent som PostgreSQL lagrede prosedyrer .
Vi kan lage PostgreSQL-funksjoner på serverspråk, for eksempel, SQL , PL/pgSQL , C , Python etc.
Det gjør oss i stand til å utføre operasjoner, som vanligvis vil ta forskjellige kommandoer og rundturer i en funksjon i databasen.
Hva er kommandoen PostgreSQL CREATE Function?
I PostgreSQL, hvis vi ønsker å spesifisere en ny brukerdefinert funksjon, kan vi bruke LAG FUNKSJON kommando.
Syntaks for PostgreSQL CREATE-funksjonskommandoen
Syntaksen for PostgreSQL CREATE Funksjonskommando er som følgende:
CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype LANGUAGE plpgsql AS $variable_name$ DECLARE declaration; [...] -- variable declaration BEGIN [...] -- logic RETURN variable_name END; $$
I syntaksen ovenfor har vi brukt følgende parametere, som vist i tabellen nedenfor:
serie i postgres
Parametere | Beskrivelse |
---|---|
funksjonsnavn |
|
[ELLER ERSTATT] |
|
Funksjon |
|
KOMME TILBAKE |
|
Språk plpgsql |
|
Function_body |
|
Eksempel på PostgreSQL Create Function Command
La oss se et annet eksempel for å forstå hvordan det fungerer PostgreSQL CREATE-funksjon kommando.
Vi tar Bil bord fra Javatpoint database, opprettet i PostgreSQL Tutorial.
Opprette en ny funksjon
I kommandoen nedenfor lager vi en ny funksjon som teller Biler hvem sin Bil_Pris mellom Pris_fra og Pris_til parametere:
Create function get_car_Price(Price_from int, Price_to int) returns int language plpgsql as $$ Declare Car_count integer; Begin select count(*) into Car_count from Car where Car_price between Price_from and Price_to; return Car_count; End; $$;
De få_bil_pris funksjonen er delt inn i to hovedseksjoner, som er Topptekst og funksjonstekst .
Vi har brukt følgende parametere i Overskrift seksjon:
- Primært spesifiserer vi funksjonsnavnet som get_car_Price(), som er skrevet etter lage funksjon
- Etter det har get_car_Price() funksjonen inneholder to parametere Pris_fra og Pris_til, har heltallsdatatype.
- Og så get_car_Price() funksjonen henter et heltall definert av return int-betingelsen.
- Og på slutten har vi brukt funksjonen språk som plpgsql .
Vi har brukt følgende parametere i Funksjon Body seksjon:
- Vi har brukt dollarnotert streng konstant illustrasjon i funksjonsdelen, som starter med $$ og avsluttes med $$ .
- Imellom $$ tegn, kan vi plassere en blokk, som dekker erklæringen og logikken til funksjonen .
- I deklarasjonsblokken erklærte vi en variabel kalt Car_count, som lagrer bilene valgt fra Bil
- I blokkdelens kropp har vi brukt VELG I kommandoen for å velge prisen på biler med verdier mellom Pris_fra og Pris_til og gi utgangen til Bil_antall
- På slutten av blokken har vi brukt KOMME TILBAKE kommando for å få
Opprette en funksjon i PostgreSQL
I PostgreSQL kan vi lage en funksjon på to måter:
PostgreSQL Opprett-funksjon ved å bruke pgAdmin
Vi skal følge prosessen nedenfor for å lage en funksjon i pgAdmin:
Trinn 1
Først vil vi åpne den nyeste versjonen pgAdmin i vårt lokale system, og vi vil gå til objekttreet og koble til Javatpoint eksempeldatabase der vi ønsker å lage en funksjon.
Steg 2
Etter det vil vi åpne spørringsverktøyet ved å klikke på Spørreverktøy fulgte Verktøy-delen, som vi kan se i skjermbildet nedenfor:
kommando touch i linux
Trinn 3
For å lage get_car_Price1() funksjon, vil vi bruke koden ovenfor i spørreverktøy og klikk på Henrette knapp.
Etter å ha implementert kommandoen ovenfor, vil vi få meldingsvinduet nedenfor som viser funksjonen get_car_Price1() har vært opprettet vellykket inn i en lignende database.
Og vi kan identifisere funksjonen get_car_Price() i Funksjoner liste som vi kan se i følgende skjermbilde:
Merk: Hvis vi ikke kan identifisere funksjonsnavnet, kan vi høyreklikke på funksjonsnoden og velge Oppdater... menyelementet for å gjenopplive funksjonslisten:
Opprette en funksjon ved hjelp av SQL Shell(psql)
Vi skal følge prosessen nedenfor for å lage en tabell i psql :
Trinn 1
- Først vil vi åpne psql i vårt lokale system, og vi vil koble til databasen der vi ønsker å lage en funksjon.
- Vi lager en tabell i javatpoint database, som vi opprettet tidligere i PostgreSQL-opplæringen.
Steg 2
- For å koble til en database, skriver vi inn kommandoen nedenfor:
c javatpoint
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få følgende utgang:
Merk: Hvis vi skriver inn en lignende kommando som ovenfor for å lage en funksjon, i psql, vil den gi feilen nedenfor som er: funksjonen get_car_price eksisterer allerede med de samme argumenttypene.
Derfor, for å løse denne feilen, oppretter vi en ny funksjon som få_bil_Pris1 () i neste trinn.
Trinn 3
arraylist i java
Vi vil skrive inn kommandoen nedenfor for å lage en funksjon som få_bil_Pris1 () i javatpoint database.
javatpoint=# Create function get_car_Price1(Price_from int, Price_to int) javatpoint-# returns int javatpoint-# language plpgsql javatpoint-# as javatpoint-# $$ javatpoint$# Declare javatpoint$# Car_count integer; javatpoint$# Begin javatpoint$# select count(*) javatpoint$# into Car_count javatpoint$# from Car javatpoint$# where car_price between Price_from and Price_to; javatpoint$# return Price_count; javatpoint$# End; javatpoint$# $$;
Produksjon
Vi vil få følgende utgang ved implementering av kommandoen ovenfor, som viser at get_car_Price_count1() funksjonen er opprettet.
Trinn 4
Vi kan bruke kommandoen nedenfor for å liste opp alle brukerdefinerte funksjoner i den eksisterende databasen.
javatpoint=# df
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få utgangen nedenfor:
Hvordan kalle opp en brukerdefinert funksjon
I PostgreSQL kan vi kalle den brukerdefinerte funksjonen på tre måter, som er som følger:
Kalle opp en funksjon ved hjelp av posisjonsnotasjon
Hvis vi ønsker å beskrive argumentene i lignende rekkefølge som parametere, kan vi kalle en funksjon med posisjonsnotasjoner hjelp.
prologspråk
La oss se et eksempel for å forstå Posisjonsnotasjon jobber med å kalle en bestemt funksjon.
I eksemplet nedenfor er få_bilpris() argumenter er 26000 og 70 000 , som tilsvarer Pris_fra og Pris_til parametere.
Select get_car_Price(26000,70000);
Produksjon
Vi vil få følgende utgang ved implementering av kommandoen ovenfor, som henter de fire radene hvis bil_pris er mellom 26000 til 70000.
Når funksjonen knapt har noen parametere, kan vi kalle en funksjon ved hjelp av posisjonsnotasjon .
Hvis funksjonen inneholder flere parametere, kan vi bruke navngitt notasjon å kalle den spesielle funksjonen fordi du bruker navngitt notasjon vil gjøre funksjonskallet mer forståelig.
Kalle opp en funksjon ved å bruke navngitt notasjon
I eksemplet nedenfor viser vi hvordan du kaller get_car_Price() funksjon ved å bruke den navngitte notasjonen:
select get_car_Price( Price_from => 26000, Price_to => 70000 );
Produksjon
Vi vil få følgende utgang ved å utføre kommandoen ovenfor, som viser fire rader basert på området ovenfor bil_pris .
I notasjonen nevnt tidligere har vi brukt => for å skille argumentet navn og verdi .
PostgreSQL tillater den eldre syntaksen som er opprettet på := for bakoverkompatibilitet , som vi kan se i følgende kommando:
select get_car_Price( Price_from := 26000, Price_to := 70000 );
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få en lignende utgang sammenlignet med kommandoen ovenfor der vi bruker ' =>' i stedet for ':=' .
Kalle opp en funksjon ved å bruke den blandede notasjonen
Det er grupperingen av posisjonell og navngitt notasjoner.
La oss se et eksempel for å forstå hvordan det fungerer Kalle opp en funksjon ved hjelp av blandet notasjon.
I blandet notasjon , kan vi ikke bruke kalt parametere før posisjonelle parametere .
For eksempel:
I kommandoen nedenfor vil vi bruke navngitt forestilling til Pris_fra parameter som Pris_fra=>26000, mens for Pris_til parameter, har vi brukt posisjonsoppfatning som 70 000 , som vi kan se i kommandoen nedenfor:
java strengbygger
select get_car_Price(Price_from=>26000,70000);
Produksjon
Etter å ha utført kommandoen ovenfor, viser PostgreSQL en feil, som sier at posisjonsargument kan ikke følge det navngitte argumentet .
For å løse feilen ovenfor bruker vi posisjonell og navngitt notasjon til få_bilprisen() funksjon der 26000 brukes til å representere Posisjonsnotasjon; på den andre siden, Pris_til=>70 000 brukes til å representere navngitt notasjon :
select get_car_Price(26000,Price_to=>70000);
Produksjon
Etter å ha utført kommandoen ovenfor, vil vi få utgangen nedenfor, som returnerer de bilene som har bil_pris er mellom 26000 og 70000.
Oversikt
I PostgreSQL funksjon seksjonen, har vi lært følgende emner:
- Vi har brukt CREATE-funksjon kommando for å lage en brukerdefinert funksjon for den aktuelle tabellen.
- Vi har forstått prosessen med kaller en brukerdefinert funksjon ved hjelp av ulike notasjoner som f.eks Posisjonelt, navngitt og blandet.