logo

PostgreSQL-funktioner

I det här avsnittet kommer vi att förstå hur det fungerar PostgreSQL-funktioner, skapa funktion kommando och se realtidsexemplet på PostgreSQL CREATE FUNCTION kommando använda de olika verktygen i PostgreSQL som t.ex pgadmin4 och SQL-skal (PSQL).

Och se exemplet med att kalla en användardefinierad funktion Till exempel positionsbeteckning namngiven notation, den blandade notationen.

Vad är PostgreSQL-funktionen?

En PostgreSQL-funktion eller en lagrad procedur är en uppsättning SQL och procedurkommandon som t.ex deklarationer, uppdrag, loopar, flow-of-control etc. lagras på databasservern och kan involveras med hjälp av SQL-gränssnitt . Och det är också känt som PostgreSQL lagrade procedurer .

Vi kan skapa PostgreSQL-funktioner på servalspråk, till exempel, SQL , PL/pgSQL , C , Pytonorm etc.

Det gör det möjligt för oss att utföra operationer, som vanligtvis tar olika kommandon och rundor i en funktion i databasen.

Vad är kommandot PostgreSQL CREATE Function?

I PostgreSQL, om vi vill specificera en ny användardefinierad funktion, kan vi använda SKAPA FUNKTION kommando.

Syntax för PostgreSQL CREATE-funktionskommandot

Syntaxen för PostgreSQL CREATE Funktionskommando enligt följande:

 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 ovanstående syntax har vi använt följande parametrar, som visas i tabellen nedan:

hur får jag reda på storleken på min bildskärm
Parametrar Beskrivning
funktionsnamn
  • De funktionsnamn parameter används för att definiera funktionsnamnet.
  • Funktionsnamnet skrivs efter SKAPA FUNKTION nyckelord.
[ELLER ERSÄTT]
  • Vi kan använda ELLER BYT nyckelord om vi vill ändra den nuvarande funktionen.
  • Och det är en valfri parameter.
Fungera
  • Efter att ha använt ELLER BYT nyckelord kan vi definiera fungera parameterlista som täcks inom parentes efter Funktionsnamn.
  • Och en funktion kan innehålla noll eller flera parametrar.
LÄMNA TILLBAKA
  • Vi kan definiera datatypen efter LÄMNA TILLBAKA nyckelord, som vi kommer att returnera från funktionen.
  • Det kan vara en bas-, sammansatt eller domäntyp eller referens av typen av en tabellkolumn.
Språk plpgsql
  • Det används för att definiera namnet på det procedurspråk som funktionen exekveras på.
  • Och inte bara plpgsql, PostgreSQL stöder olika procedurspråk.
Function_body
  • De function_body innehåller de körbara delarna av logiken.

Exempel på PostgreSQL Skapa funktionskommando

Låt oss se ett annat exempel för att förstå hur det fungerar PostgreSQL CREATE-funktion kommando.

Vi tar Bil bord från Javatpoint databas, skapad i PostgreSQL Tutorial.

Skapa en ny funktion

I kommandot nedan skapar vi en ny funktion som räknar Bilar vars Bil_Pris mellan Pris_från och Pris_till parametrar:

 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 get_car_Price funktion är uppdelad i två huvudsektioner, som är Rubrik och funktionskropp .

Vi har använt följande parametrar i Rubrik sektion:

  • I första hand anger vi funktionsnamnet som get_car_Price(), som är skriven efter skapa funktion
  • Efter det har get_car_Price() Funktionen innehåller två parametrar Pris från och Pris_till, med heltalsdatatyp.
  • Sedan get_car_Price() funktionen hämtar ett heltal definierat av return int-villkoret.
  • Och på slutet har vi använt funktionen språk som plpgsql .

Vi har använt följande parametrar i Funktion Kropp sektion:

  • Vi har använt dollarnoterad sträng konstant illustration i funktionsdelen, som börjar med $$ och slutar med $$ .
  • Mellan $$ tecken, vi kan placera ett block, som täcker deklarationen och logiken i funktionen .
  • I deklarationsblocket deklarerade vi en variabel som heter Car_count, som lagrar bilarna som valts från Bil
  • I blocksektionens kropp har vi använt VÄLJ IN kommando för att välja priset på bilar vars värden ligger mellan Pris_från och Pris_till och ge resultatet till Bil_antal
  • I slutet av blocket har vi använt LÄMNA TILLBAKA kommandot för att hämta

Skapa en funktion i PostgreSQL

I PostgreSQL kan vi skapa en funktion på två sätt:

    PostgreSQL Skapa funktion med pgAdmin PostgreSQL Skapa funktion med SQL Shell

PostgreSQL Skapa funktion med pgAdmin

Vi kommer att följa processen nedan för att skapa en funktion i pgAdmin:

Steg 1

Först kommer vi att öppna den senaste versionen pgAdmin i vårt lokala system, och vi kommer att gå till objektträdet och ansluta till Javatpoint exempeldatabas där vi vill skapa en funktion.

Steg 2

Efter det kommer vi att öppna frågeverktyget genom att klicka på Frågeverktyget följt avsnittet Verktyg, som vi kan se i skärmdumpen nedan:

iterator java karta
PoatgreSQL funktion2

Steg 3

För att skapa get_car_Price1() funktionen kommer vi att använda ovanstående kod i frågeverktyg och klicka på Kör knapp.

Efter att ha implementerat kommandot ovan kommer vi att få meddelandefönstret nedan som visar att funktionen get_car_Price1() har varit skapas framgångsrikt in i en liknande databas.

PoatgreSQL-funktion

Och vi kan identifiera funktionen get_car_Price() i Funktioner lista som vi kan se i följande skärmdump:

PoatgreSQL-funktion

Obs: Om vi ​​inte kan identifiera funktionsnamnet kan vi högerklicka på funktionsnoden och välja menyalternativet Uppdatera... för att återuppliva funktionslistan:

PoatgreSQL-funktion

Skapa en funktion med SQL Shell(psql)

Vi kommer att följa processen nedan för att skapa en tabell i psql :

Steg 1

  • Först kommer vi att öppna psql i vårt lokala system, och vi kommer att ansluta till databasen där vi vill skapa en funktion.
  • Vi kommer att skapa en tabell i javatpoint databas, som vi skapade tidigare i PostgreSQL-handledningen.

Steg 2

  • För att ansluta en databas kommer vi att ange kommandot nedan:
 c javatpoint 

Produktion

Efter att ha utfört kommandot ovan kommer vi att få följande utdata:

PoatgreSQL-funktion

Obs: Om vi ​​anger ett liknande kommando som ovan för att skapa en funktion, i psql, kommer det att ge följande fel, dvs.: funktionen get_car_price existerar redan med samma argumenttyper.

PoatgreSQL-funktion

Därför, för att lösa detta fel, skapar vi en ny funktion som get_car_Price1 () i nästa steg.

Steg 3

java ersätt allt

Vi kommer att ange kommandot nedan för att skapa en funktion som get_car_Price1 () i javatpoint databas.

 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 kommer att få följande utdata när vi implementerar kommandot ovan, som visar att get_car_Price_count1() funktionen har skapats framgångsrikt.

PoatgreSQL-funktion

Steg 4

Vi kan använda kommandot nedan för att lista alla användardefinierade funktioner i den befintliga databasen.

 javatpoint=# df 

Produktion

Efter att ha utfört kommandot ovan får vi följande utdata:

PoatgreSQL-funktion

Hur man anropar en användardefinierad funktion

I PostgreSQL kan vi anropa den användardefinierade funktionen på tre sätt, som är följande:

    Positionsbeteckning Namngiven notation Den blandade notationen

Anropa en funktion med positionsbeteckning

Om vi ​​vill beskriva argumenten i liknande ordning som parametrar kan vi anropa en funktion med positionsbeteckningar hjälp.

java matematik

Låt oss se ett exempel för att förstå Positionsbeteckning arbetar med att anropa en viss funktion.

I exemplet nedan visas get_car_price() argument är 26 000 och 70 000 , vilket motsvarar Pris från och Pris_till parametrar.

 Select get_car_Price(26000,70000); 

Produktion

Vi kommer att få följande utdata när vi implementerar kommandot ovan, som hämtar de fyra raderna vars bil_pris är mellan 26 000 till 70 000.

PoatgreSQL-funktion

När funktionen knappt har några parametrar kan vi anropa en funktion med hjälp av positionsbeteckning .

Om funktionen innehåller flera parametrar kan vi använda namngiven notation att anropa den specifika funktionen eftersom du använder namngiven notation kommer att göra funktionsanropet mer begripligt.

Anropa en funktion med namngiven notation

I exemplet nedan visar vi hur det fungerar att anropa get_car_Price() funktion med den namngivna notationen:

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

Produktion

Vi kommer att få följande utdata när vi utför kommandot ovan, som visar fyra rader baserat på ovanstående intervall av bil_pris .

PoatgreSQL-funktion

I notationen som nämndes tidigare har vi använt => för att särskilja argumentet namn och värde .

PostgreSQL tillåter den äldre syntaxen som skapas på := för bakåtkompatibilitet , som vi kan se i följande kommando:

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

Produktion

Efter att ha utfört kommandot ovan kommer vi att få en liknande utdata jämfört med ovanstående kommandos resultat där vi använder ' =>' istället för ':=' .

PoatgreSQL-funktion

Anropa en funktion med den blandade notationen

Det är grupperingen av positionella och namngivna notationer.

Låt oss se ett exempel för att förstå hur det fungerar Anropa en funktion med blandad notation.

I den blandad notation , vi kan inte använda namngivna parametrar innan positionsparametrar .

Till exempel:

I kommandot nedan kommer vi att använda namngiven föreställning för Pris från parameter som Price_from=>26000, medan för Pris_till parametern har vi använt positionsuppfattning som 70 000 , som vi kan se i kommandot nedan:

ridhima tiwari
 select get_car_Price(Price_from=>26000,70000); 

Produktion

Efter att ha utfört kommandot ovan, visar PostgreSQL ett fel som säger att positionsargument kan inte följa det namngivna argumentet .

PoatgreSQL-funktion

För att lösa ovanstående fel använder vi positionell och namngiven notation för get_car_price() funktion där 26 000 används för att representera Positionsbeteckning; å andra sidan, Pris_till=>70 000 används för att representera namngiven notation :

 select get_car_Price(26000,Price_to=>70000); 

Produktion

Efter att ha utfört kommandot ovan kommer vi att få utdata nedan, som returnerar de bilar vars bil_pris är mellan 26000 till 70000.

PoatgreSQL-funktion

Översikt

I den PostgreSQL-funktion avsnitt har vi lärt oss följande ämnen:

  • Vi har använt CREATE-funktionen kommando för att skapa en användardefinierad funktion för den specifika tabellen.
  • Vi har förstått processen anropa en användardefinierad funktion med hjälp av olika notationer som t.ex Positionell, namngiven och blandad.