I det här avsnittet kommer vi att förstå hur PostgreSQL-funktionerna fungerar, hur man skapar funktionskommandot och se realtidsexemplet PostgreSQL CREATE FUNCTION-kommandot med hjälp av de olika verktygen i PostgreSQL, till exempel pgadmin4 och SQL shell (PSQL).
Och se exemplet på att kalla en användardefinierad funktion som positionell notation namngiven notation, den blandade notationen.
- Vad är PostgreSQL-funktionen?
- Vad är PostgreSQL CREATE Function-kommandot?
- Syntax för PostgreSQL CREATE Function-kommandot
- Example of PostgreSQL Create Function Command
- Creating a new function
- Skapa en funktion i PostgreSQL
- PostgreSQL Create Function using pgAdmin
- Anm.: Om vi inte kan identifiera funktionsnamnet kan vi högerklicka på noden Functions och välja Refresh… menu item to revive the function list:
- Creating a function using SQL Shell(psql)
- Note: If we enter a similar command as above to create a function, in psql, it will issue the below error that is: the function get_car_price already exists with the same argument types.
- How to Call a user-defined function
- Kalla en funktion med hjälp av positionell notation
- Kalla en funktion med hjälp av namngiven notation
- Kalla en funktion med hjälp av den blandade notationen
- Översikt
Vad är PostgreSQL-funktionen?
En PostgreSQL-funktion eller en lagrad procedur är en uppsättning SQL- och procedurkommandon som deklarationer, tilldelningar, slingor, flow-of-control etc. som är lagrade på databasservern och som kan involveras med hjälp av SQL-gränssnittet. Och det är också känt som PostgreSQL stored procedures.
Vi kan skapa PostgreSQL-funktioner i serval språk, till exempel SQL, PL/pgSQL, C, Python etc.
Det gör det möjligt för oss att utföra operationer, som generellt sett skulle ta olika kommandon och rundresor i en funktion i databasen.
Vad är PostgreSQL CREATE Function-kommandot?
I PostgreSQL kan vi, om vi vill specificera en ny användardefinierad funktion, använda kommandot CREATE FUNCTION.
Syntax för PostgreSQL CREATE Function-kommandot
Syntaxen för PostgreSQL CREATE Function-kommandot är följande:
I syntaxen ovan har vi använt följande parametrar som visas i tabellen nedan:
Parametrar | Beskrivning |
---|---|
function_name |
|
|
|
Function |
|
RETURN |
|
Language plpgsql |
|
Function_body |
|
Example of PostgreSQL Create Function Command
Let us see a different example to understand the working of the PostgreSQL CREATE Function command.
We are taking the Car table from the Javatpoint database, created in the PostgreSQL Tutorial.
Creating a new function
In the below command, we are creating a new function, which counts the Cars whose Car_Price between the Price_from and Price_to parameters:
The get_car_Price function is divided into two main sections, which are Header and Function Body.
Vi har använt följande parametrar i avsnittet Header:
- Primärt anger vi funktionsnamnet som get_car_Price(), vilket skrivs efter create-funktionen
- Efter det innehåller funktionen get_car_Price() två parametrar Price_from och Price_to, som har heltalsdatatyp.
- Därefter hämtar funktionen get_car_Price() ett heltal som definieras av villkoret return int.
- Och i slutet har vi använt funktionsspråket som plpgsql.
Vi har använt följande parametrar i avsnittet Funktionskropp:
- Vi har använt oss av den dollarkvitterade strängkonstantillustrationen i funktionsavsnittet, som börjar med $$ och slutar med $$.
- Inom $$-tecknet kan vi placera ett block, som täcker deklarationen och logiken för funktionen.
- I deklarationsblocket deklarerade vi en variabel som heter Car_count,som lagrar de bilar som valts från Car
- I blocksektionens kropp, har vi använt SELECT INTOkommandot för att välja priset på de bilar vars värden ligger mellan Price_from och Price_to och ge resultatet till Car_count
- I slutet av blocket har vi använt RETURNkommandot för att få fram
Skapa en funktion i PostgreSQL
I PostgreSQL kan vi skapa en funktion på två sätt:
- PostgreSQL Create Function using pgAdmin
- PostgreSQL Create Function using SQL Shell
PostgreSQL Create Function using pgAdmin
Vi ska följa nedanstående process för att skapa en funktion i pgAdmin:
Steg1
Först öppnar vi den senaste versionen av pgAdmin i vårt lokala system, och vi går till objektträdet och ansluter till Javatpoints exempeldatabas i vilken vi vill skapa en funktion.
Steg2
Därefter öppnar vi frågeverktyget genom att klicka på Frågeverktyget följt av avsnittet Verktyg, som vi kan se i skärmdumpen nedan:
Steg3
För att skapa funktionen get_car_Price1() använder vi koden ovan i frågeverktyget och klickar på knappen Utför.
Efter att ha genomfört ovanstående kommando får vi nedanstående meddelandefönster som visar att funktionen get_car_Price1() har skapats framgångsrikt i en liknande databas.
Och vi kan identifiera funktionen get_car_Price() i funktionslistan som vi kan se i följande skärmdump:
Creating a function using SQL Shell(psql)
We are going to follow the below process to create a table in psql:
Step1
- Firstly, we will open the psqlin our local system, and we will connect to the database where we want to create a function.
- We will create a table in the javatpointdatabase, which we created earlier in the PostgreSQL tutorial.
Step2
- For connecting a database, we will enter the below command:
Output
After executing the above command, we will get the following output:
Note: If we enter a similar command as above to create a function, in psql, it will issue the below error that is: the function get_car_price already exists with the same argument types.
Therefore, to resolve this error, we create a new function as get_car_Price1() in the next step.
Step3
We will enter the below command to create a function as get_car_Price1() in the javatpoint database.
Output
We will get the following output on implementing the above command, which displays that the get_car_Price_count1() function has been created successfully.
Step4
We can use the below command to list all user-defined functions in the existing database.
Output
After executing the above command, we will get the below output:
How to Call a user-defined function
In PostgreSQL, we can call the user-defined function in three ways, which are as follows:
- Positionell notation
- Namngiven notation
- Den blandade notationen
Kalla en funktion med hjälp av positionell notation
Om vi vill beskriva argumenten i liknande ordning som parametrar kan vi kalla en funktion med hjälp av den positionella notationens hjälp.
Låt oss se ett exempel för att förstå hur positionell notation fungerar för att anropa en viss funktion.
I exemplet nedan är argumenten för get_car_price() 26000 och 70000, vilket motsvarar parametrarna Price_from och Price_to.
Output
Vi får följande output när vi implementerar kommandot ovan, vilket hämtar de fyra rader vars car_price ligger mellan 26000 och 70000.
När funktionen knappt har några parametrar kan vi anropa en funktion med hjälp av positionell notation.
Om funktionen innehåller flera parametrar kan vi använda den namngivna notationen för att anropa den aktuella funktionen eftersom användningen av den namngivna notationen gör funktionsanropet mer begripligt.
Kalla en funktion med hjälp av namngiven notation
I nedanstående exempel visar vi hur det fungerar att kalla funktionen get_car_Price() med hjälp av namngiven notation:
Utmatning
Vi kommer att få följande utmatning när vi utför ovanstående kommando, som visar fyra rader baserade på ovanstående intervall för car_price.
I den tidigare nämnda notationen har vi använt => för att särskilja argumentets namn och värde.
PostgreSQL tillåter den äldre syntaxen skapad på := för bakåtkompatibilitet, vilket vi kan se i följande kommando:
Output
Efter att ha exekverat ovanstående kommando kommer vi att få ett liknande utdata jämfört med ovanstående kommandos resultat där vi använder ’=>’ istället för ’:=’.
Kalla en funktion med hjälp av den blandade notationen
Det är en gruppering av positionella och namngivna notationer.
Låt oss se ett exempel för att förstå hur Calling a function using mixed notation fungerar.
I mixed notation kan vi inte använda named Parameters före positional Parameters.
Till exempel:
I nedanstående kommando kommer vi att använda det namngivna begreppet för Price_from-parametern som Price_from=>26000, medan vi för Price_to-parametern har använt det positionella begreppet som 70000, vilket vi kan se i kommandot nedan:
Output
Efter att ha utfört ovanstående kommando ger PostgreSQL upphov till ett fel som säger att det positionella argumentet inte kan följa det namngivna argumentet.
För att lösa ovanstående fel använder vi positionell och namngiven notation för funktionen get_car_price() där 26000 används för att representera den positionella notationen; å andra sidan används Price_to=>70000 för att representera den namngivna notationen:
Output
Efter att ha utfört ovanstående kommando får vi nedanstående output, som returnerar de bilar vars car_price ligger mellan 26000 och 70000.
Översikt
I avsnittet om PostgreSQL-funktioner har vi lärt oss följande ämnen:
- Vi har använt kommandot CREATE Function för att skapa en användardefinierad funktion för en viss tabell.
- Vi har förstått hur det går till när man anropar en användardefinierad funktion med hjälp av olika notationer, såsom Positional, Named och Mixed.