PostgreSQL-funktioner

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?

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
  • Parametern funktionsnamn används för att definiera funktionsnamnet.
  • The function name is written after the CREATE FUNCTION keyword.
  • We can use the OR REPLACE keyword if we want to change the current function.
  • And it is an optional parameter.
Function
  • After using the OR REPLACE keyword, we can define the function parameter list that are covered in the parentheses after the Function Name.
  • And a function can contain zero or several parameters.
RETURN
  • We can define the data type after the RETURN keyword, which we are going to return from the function.
  • It can be a base, composite, or domain type or reference of the type of a table column.
Language plpgsql
  • It is used to define the name of the Procedural language in which the function is executed.
  • And not just plpgsql, the PostgreSQL supports various procedural languages.
Function_body
  • The function_body contains the executable parts of the logics.

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:

PoatgreSQL-funktion2

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.

PoatgreSQL Function

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

PoatgreSQL Function

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:

PoatgreSQL Function

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:

PoatgreSQL Function

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.

PoatgreSQL Function

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.

PoatgreSQL Function

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:

PoatgreSQL Function

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.

PoatgreSQL-funktion

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.

PoatgreSQL-funktion

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

PoatgreSQL-funktion

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.

PoatgreSQL-funktion

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.

PostgreSQL-funktion

Ö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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *