logo

PostgreSQL-funksjoner

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
  • De funksjonsnavn parameter brukes til å definere funksjonsnavnet.
  • Funksjonsnavnet skrives etter LAG FUNKSJON nøkkelord.
[ELLER ERSTATT]
  • Vi kan bruke ELLER BYTT nøkkelord hvis vi ønsker å endre gjeldende funksjon.
  • Og det er en valgfri parameter.
Funksjon
  • Etter bruk av ELLER BYTT nøkkelord, kan vi definere funksjon parameterliste som er dekket i parentes etter Funksjonsnavn.
  • Og en funksjon kan inneholde null eller flere parametere.
KOMME TILBAKE
  • Vi kan definere datatypen etter KOMME TILBAKE nøkkelord, som vi skal returnere fra funksjonen.
  • Det kan være en base-, sammensatt- eller domenetype eller referanse av typen tabellkolonne.
Språk plpgsql
  • Det brukes til å definere navnet på prosedyrespråket som funksjonen utføres på.
  • Og ikke bare plpgsql, PostgreSQL støtter ulike prosedyrespråk.
Function_body
  • De function_body inneholder de kjørbare delene av logikken.

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 PostgreSQL Opprett funksjon ved hjelp av SQL Shell

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
PoatgreSQL funksjon2

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.

PoatgreSQL funksjon

Og vi kan identifisere funksjonen get_car_Price() i Funksjoner liste som vi kan se i følgende skjermbilde:

PoatgreSQL funksjon

Merk: Hvis vi ikke kan identifisere funksjonsnavnet, kan vi høyreklikke på funksjonsnoden og velge Oppdater... menyelementet for å gjenopplive funksjonslisten:

PoatgreSQL funksjon

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:

PoatgreSQL funksjon

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.

PoatgreSQL funksjon

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.

PoatgreSQL funksjon

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:

PoatgreSQL funksjon

Hvordan kalle opp en brukerdefinert funksjon

I PostgreSQL kan vi kalle den brukerdefinerte funksjonen på tre måter, som er som følger:

    Posisjonsnotasjon Navngitt notasjon Den blandede notasjonen

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.

PoatgreSQL funksjon

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 .

PoatgreSQL funksjon

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 ':=' .

PoatgreSQL funksjon

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 .

PoatgreSQL funksjon

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.

PoatgreSQL funksjon

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.