logo

PostgreSQL funktioner

I dette afsnit skal vi forstå, hvordan det fungerer PostgreSQL-funktioner, opret funktion kommando, og se realtidseksemplet på PostgreSQL CREATE FUNCTION kommando ved at bruge de forskellige værktøjer i PostgreSQL som f.eks pgadmin4 og SQL shell (PSQL).

Og se eksemplet med at kalde en brugerdefineret funktion såsom positionel notation navngivet notation, den blandede notation.

Hvad er PostgreSQL-funktionen?

En PostgreSQL-funktion eller en gemt procedure er et sæt af SQL og proceduremæssige kommandoer som f.eks erklæringer, opgaver, loops, flow-of-control osv. gemt på databaseserveren og kan inddrages ved hjælp af SQL interface . Og det er også kendt som PostgreSQL lagrede procedurer .

Vi kan oprette PostgreSQL-funktioner på serversprog, f.eks. SQL , PL/pgSQL , C , Python etc.

Det gør os i stand til at udføre operationer, som generelt vil tage forskellige kommandoer og rundrejser i en funktion i databasen.

Hvad er kommandoen PostgreSQL CREATE Function?

I PostgreSQL, hvis vi ønsker at angive en ny brugerdefineret funktion, kan vi bruge OPRET FUNKTION kommando.

Syntaks for PostgreSQL CREATE funktionskommandoen

Syntaksen for PostgreSQL CREATE Funktionskommando 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 ovenstående syntaks har vi brugt følgende parametre, som vist i nedenstående tabel:

føljeton i postgres
Parametre Beskrivelse
funktionsnavn
  • Det funktions navn parameter bruges til at definere funktionsnavnet.
  • Funktionsnavnet skrives efter OPRET FUNKTION søgeord.
[ELLER ERSTAT]
  • Vi kan bruge ELLER UDSKIFT søgeord, hvis vi ønsker at ændre den aktuelle funktion.
  • Og det er en valgfri parameter.
Fungere
  • Efter brug af ELLER UDSKIFT søgeord, kan vi definere fungere parameterliste, der er dækket i parentes efter Funktionsnavn.
  • Og en funktion kan indeholde nul eller flere parametre.
VEND TILBAGE
  • Vi kan definere datatypen efter VEND TILBAGE søgeord, som vi skal returnere fra funktionen.
  • Det kan være en basis-, sammensat- eller domænetype eller reference af typen af ​​en tabelkolonne.
Sprog plpgsql
  • Det bruges til at definere navnet på det proceduresprog, som funktionen udføres på.
  • Og ikke kun plpgsql, PostgreSQL understøtter forskellige proceduresprog.
Function_body
  • Det function_body indeholder de eksekverbare dele af logikken.

Eksempel på PostgreSQL Create Function Command

Lad os se et andet eksempel for at forstå, hvordan det fungerer PostgreSQL CREATE funktion kommando.

Vi tager Bil bord fra Javatpoint database, oprettet i PostgreSQL Tutorial.

Oprettelse af en ny funktion

I nedenstående kommando opretter vi en ny funktion, som tæller Biler hvis Bil_Pris imellem Pris_fra og Pris_til parametre:

 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; $$; 

Det få_bil_Pris funktion er opdelt i to hovedafsnit, som er Overskrift og funktionstekst .

Vi har brugt følgende parametre i Header afsnit:

  • Primært angiver vi funktionsnavnet som get_car_Price(), som er skrevet efter skabe funktion
  • Herefter er get_car_Price() funktion indeholder to parametre Pris_fra og Pris_til, med heltalsdatatype.
  • Derefter get_car_Price() funktion henter et heltal defineret af return int betingelsen.
  • Og til sidst har vi brugt funktionen sprog som plpgsql .

Vi har brugt følgende parametre i Funktion Krop afsnit:

  • Vi har brugt dollar-noteret streng konstant illustration i funktionsafsnittet, som starter med $$ og slutter med $$ .
  • Ind i mellem $$ skilt, kan vi placere en blok, som dækker erklæringen og logikken i funktionen .
  • I erklæringsblokken erklærede vi en variabel kaldet Car_count, som gemmer de valgte biler fra Bil
  • I blokafsnittets krop har vi brugt VÆLG INTO kommando for at vælge prisen på biler, hvis værdier er mellem Pris_fra og Pris_til og giv output til Car_count
  • For enden af ​​blokken har vi brugt VEND TILBAGE kommando for at få

Oprettelse af en funktion i PostgreSQL

I PostgreSQL kan vi oprette en funktion på to måder:

    PostgreSQL Opret funktion ved hjælp af pgAdmin PostgreSQL Opret funktion ved hjælp af SQL Shell

PostgreSQL Opret funktion ved hjælp af pgAdmin

Vi vil følge nedenstående proces for at oprette en funktion i pgAdmin:

Trin 1

For det første åbner vi den seneste version pgAdmin i vores lokale system, og vi vil gå til objekttræet og oprette forbindelse til Javatpoint eksempeldatabase, hvori vi vil oprette en funktion.

Trin 2

Derefter åbner vi forespørgselsværktøjet ved at klikke på Forespørgselsværktøj fulgte afsnittet Værktøjer, som vi kan se på nedenstående skærmbillede:

knap for at centrere css
PoatgreSQL funktion2

Trin 3

For at skabe get_car_Price1() funktion, vil vi bruge ovenstående kode i forespørgselsværktøj og klik på Udfør knap.

Efter implementering af ovenstående kommando får vi nedenstående meddelelsesvindue, der viser funktionen get_car_Price1() har været oprettet med succes ind i en lignende database.

PoatgreSQL funktion

Og vi kan identificere funktionen get_car_Price() i Funktioner liste som vi kan se på følgende skærmbillede:

PoatgreSQL funktion

Bemærk: Hvis vi ikke kan identificere funktionsnavnet, kan vi højreklikke på funktionsknuden og vælge menupunktet Opdater... for at genoplive funktionslisten:

PoatgreSQL funktion

Oprettelse af en funktion ved hjælp af SQL Shell(psql)

Vi vil følge nedenstående proces for at oprette en tabel i psql :

Trin 1

  • Først vil vi åbne psql i vores lokale system, og vi vil oprette forbindelse til databasen, hvor vi ønsker at oprette en funktion.
  • Vi laver en tabel i javatpoint database, som vi oprettede tidligere i PostgreSQL tutorial.

Trin 2

  • For at forbinde en database, vil vi indtaste nedenstående kommando:
 c javatpoint 

Produktion

Efter at have udført ovenstående kommando, får vi følgende output:

PoatgreSQL funktion

Bemærk: Hvis vi indtaster en lignende kommando som ovenfor for at oprette en funktion, i psql, vil den give nedenstående fejl, dvs.: funktionen get_car_price eksisterer allerede med de samme argumenttyper.

PoatgreSQL funktion

Derfor, for at løse denne fejl, opretter vi en ny funktion som få_bil_Pris1 () i næste trin.

Trin 3

Rom

Vi vil indtaste nedenstående kommando for at oprette en funktion 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$# $$; 

Produktion

Vi får følgende output ved implementering af ovenstående kommando, som viser, at get_car_Price_count1() funktion er blevet oprettet.

PoatgreSQL funktion

Trin 4

Vi kan bruge nedenstående kommando til at liste alle brugerdefinerede funktioner i den eksisterende database.

 javatpoint=# df 

Produktion

Efter at have udført ovenstående kommando, får vi nedenstående output:

PoatgreSQL funktion

Sådan kalder du en brugerdefineret funktion

I PostgreSQL kan vi kalde den brugerdefinerede funktion på tre måder, som er som følger:

    Positionsnotation Navngiven notation Den blandede notation

Kaldning af en funktion ved hjælp af positionsnotation

Hvis vi ønsker at beskrive argumenterne i en lignende rækkefølge som parametre, kan vi kalde en funktion med positionsbetegnelser Hjælp.

prologsprog

Lad os se et eksempel for at forstå Positionsnotation arbejder på at kalde en bestemt funktion.

I eksemplet nedenfor get_car_price() argumenter er 26000 og 70.000 , hvilket svarer til Pris_fra og Pris_til parametre.

 Select get_car_Price(26000,70000); 

Produktion

Vi får følgende output om implementering af ovenstående kommando, som henter de fire rækker, hvis bil_pris er mellem 26000 til 70000.

PoatgreSQL funktion

Når funktionen næsten ikke har nogen parametre, kan vi kalde en funktion ved hjælp af positionsbetegnelse .

Hvis funktionen indeholder flere parametre, kan vi bruge navngivne notation at kalde den bestemte funktion, fordi du bruger navngivne notation vil gøre funktionskaldet mere forståeligt.

Kaldning af en funktion ved hjælp af navngivet notation

I eksemplet nedenfor viser vi, hvordan man kalder get_car_Price() funktion ved hjælp af den navngivne notation:

 select get_car_Price( Price_from => 26000, Price_to => 70000 ); 

Produktion

Vi får følgende output ved udførelse af ovenstående kommando, som viser fire rækker baseret på ovenstående rækkevidde af bil_pris .

PoatgreSQL funktion

I den tidligere nævnte notation har vi brugt => at skelne mellem argumenterne navn og værdi .

PostgreSQL tillader den ældre syntaks oprettet på := for bagudkompatibilitet , som vi kan se i følgende kommando:

 select get_car_Price( Price_from := 26000, Price_to := 70000 ); 

Produktion

Efter at have udført ovenstående kommando, vil vi få et lignende output sammenlignet med ovenstående kommandos resultat, hvor vi bruger ' =>' i stedet for ':=' .

PoatgreSQL funktion

Kaldning af en funktion ved hjælp af den blandede notation

Det er grupperingen af positionsbestemt og navngivet notationer.

Lad os se et eksempel for at forstå, hvordan det fungerer Kaldning af en funktion ved hjælp af blandet notation.

I den blandet notation , kan vi ikke bruge navngivne parametre Før positionelle parametre .

For eksempel:

I nedenstående kommando vil vi bruge navngivet begreb til Pris_fra parameter som Pris_fra=>26000, hvorimod for Pris_til parameter, har vi brugt positionsbegreb som 70.000 , som vi kan se i nedenstående kommando:

java strengbygger
 select get_car_Price(Price_from=>26000,70000); 

Produktion

Efter at have udført ovenstående kommando, rejser PostgreSQL en fejl, som siger, at positionsargument kan ikke følge det navngivne argument .

PoatgreSQL funktion

For at løse ovenstående fejl bruger vi positionel og navngiven notation til get_car_price() funktion, hvor 26000 bruges til at repræsentere Positionel notation; på den anden side, Pris_til=>70000 bruges til at repræsentere navngivne notation :

 select get_car_Price(26000,Price_to=>70000); 

Produktion

Efter at have udført ovenstående kommando, vil vi få nedenstående output, som returnerer de biler, hvis bil_pris er mellem 26000 og 70000.

PoatgreSQL funktion

Oversigt

I den PostgreSQL funktion afsnit, har vi lært følgende emner:

  • Vi har brugt CREATE funktion kommando for at oprette en brugerdefineret funktion for den pågældende tabel.
  • Vi har forstået processen med kalder en brugerdefineret funktion ved hjælp af forskellige notationer som f.eks Positionel, navngivet og blandet.