PostgreSQL Functies

In deze sectie gaan we de werking van de PostgreSQL functies begrijpen, functie commando creëren, en het real-time voorbeeld zien van PostgreSQL CREATE FUNCTION commando met behulp van de verschillende tools van PostgreSQL zoals pgadmin4 en SQL shell (PSQL).

En zie het voorbeeld van het aanroepen van een door de gebruiker gedefinieerde functie zoals positionele notatie met de naam notatie, de gemengde notatie.

Wat is de PostgreSQL Functie?

Een PostgreSQL functie of een opgeslagen procedure is een set van SQL en procedurele commando’s zoals declaraties, opdrachten, loops, flow-of-control etc. opgeslagen op de database server en kan worden betrokken met behulp van de SQL interface. En het is ook bekend als PostgreSQL stored procedures.

We kunnen PostgreSQL functies maken in verschillende talen, bijvoorbeeld SQL, PL/pgSQL, C, Python etc.

Het stelt ons in staat om operaties uit te voeren, die over het algemeen verschillende commando’s en rondreizen zouden vergen in een functie binnen de database.

Wat is het PostgreSQL CREATE Function commando?

In PostgreSQL, als we een nieuwe door de gebruiker gedefinieerde functie willen specificeren, kunnen we gebruik maken van het CREATE FUNCTION commando.

Syntax van PostgreSQL CREATE Function commando

De syntax voor PostgreSQL CREATE Function commando is als volgt:

In de bovenstaande syntax hebben we de volgende parameters gebruikt, zoals weergegeven in de onderstaande tabel:

Parameters Beschrijving
functie_naam
  • De parameter functienaam wordt gebruikt om de functienaam te definiëren.
  • 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.

Wij hebben de volgende parameters in de Header-sectie gebruikt:

  • Als eerste specificeren wij de functienaam als get_car_Price(), die na de create-functie wordt geschreven
  • Daarna bevat de get_car_Price() functie twee parameters Price_from en Price_to, met een geheel datatype.
  • Daarna haalt de functie get_car_Price() een geheel getal op, gedefinieerd door de voorwaarde return int.
  • En aan het eind hebben we de functietaal gebruikt als plpgsql.

Wij hebben de volgende parameters in het functiegedeelte gebruikt:

  • Wij hebben in het functiegedeelte de stringconstante met dollarteken gebruikt, die begint met $$ en eindigt met $$.
  • Tussen het $$-teken kunnen wij een blok plaatsen, dat de declaratie en de logica van de functie omvat.
  • In het declaratieblok hebben we een variabele gedeclareerd met de naam Car_count, die de geselecteerde auto’s uit de Car opslaat
  • In de body van de bloksectie, hebben we het SELECT INTO-commando gebruikt om de prijs van de auto’s te selecteren waarvan de waarden tussen Price_from en Price_to liggen en de uitvoer naar de Car_count
  • Aan het eind van het blok hebben we het RETURN-commando gebruikt om de

Een functie in PostgreSQL maken

In PostgreSQL kunnen we op twee manieren een functie maken:

  • PostgreSQL Create Function using pgAdmin
  • PostgreSQL Create Function using SQL Shell

PostgreSQL Create Function using pgAdmin

We gaan het onderstaande proces volgen om een functie in pgAdmin te creëren:

Stap1

Eerst openen we de laatste versie pgAdmin in ons lokale systeem, en we gaan naar de object tree en maken verbinding met de Javatpoint voorbeeld database waarin we een functie willen maken.

Step2

Daarna openen we de query tool door te klikken op Query tool gevolgd door Tools sectie, zoals we kunnen zien in de onderstaande screenshot:

PoatgreSQL Function2

Step3

Om de get_car_Price1() functie te maken, gebruiken we de bovenstaande code in de query tool en klikken we op de Execute knop.

Na het uitvoeren van het bovenstaande commando, krijgen we het onderstaande berichtvenster te zien dat de functie get_car_Price1() met succes is gemaakt in een soortgelijke database.

PoatgreSQL Functie

En, we kunnen de functie get_car_Price() identificeren in de Functielijst zoals we kunnen zien in de volgende schermafbeelding:

PoatgreSQL Functie

Note: Als we de functienaam niet kunnen identificeren, kunnen we met de rechtermuisknop klikken op het Functies-knooppunt en de menuoptie Vernieuwen… 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:

  • Positionele notatie
  • Naamnotatie
  • De gemengde notatie

Een functie aanroepen met positionele notatie

Als we de argumenten in een vergelijkbare volgorde als de parameters willen beschrijven, kunnen we een functie aanroepen met de hulp van de positionele notatie.

Laten we een voorbeeld zien om te begrijpen hoe de Positionele Notatie werkt om een bepaalde functie aan te roepen.

In het onderstaande voorbeeld zijn de get_car_price() argumenten 26000 en 70000, wat overeenkomt met de Price_from en Price_to parameters.

Uitvoer

We krijgen de volgende uitvoer bij het uitvoeren van het bovenstaande commando, waarmee de vier rijen worden opgehaald waarvan de auto_prijs tussen 26000 en 70000 ligt.

PoatgreSQL Functie

Wanneer de functie nauwelijks parameters heeft, kunnen we een functie aanroepen met behulp van de positionele notatie.

Als de functie meerdere parameters bevat, kunnen we de naamnotatie gebruiken om de betreffende functie aan te roepen, omdat het gebruik van de naamnotatie de functieoproep begrijpelijker maakt.

Aanroepen van een functie met behulp van de naamnotatie

In het onderstaande voorbeeld laten we zien hoe het aanroepen van de functie get_car_Price() met behulp van de naamnotatie werkt:

Uitvoer

We krijgen de volgende uitvoer bij het uitvoeren van het bovenstaande commando, dat vier rijen weergeeft op basis van het bovenstaande bereik van car_price.

PoatgreSQL Functie

In de eerder genoemde notatie hebben we de => gebruikt om onderscheid te maken tussen de naam en de waarde van het argument.

PostgreSQL staat de oudere syntaxis gemaakt op := toe voor de achterwaartse compatibiliteit, zoals we kunnen zien in het volgende commando:

Uitvoer

Na het uitvoeren van het bovenstaande commando, krijgen we een vergelijkbare uitvoer in vergelijking met het resultaat van het bovenstaande commando waar we de ‘=>’ gebruiken in plaats van ‘:=’.

PoatgreSQL Functie

Een functie aanroepen met behulp van de gemengde notatie

Het is de groepering van positionele en benoemde notaties.

Laten we eens een voorbeeld zien om de werking van het aanroepen van een functie met behulp van de gemengde notatie te begrijpen.

In de gemengde notatie kunnen we de benoemde Parameters niet vóór de positionele Parameters gebruiken.

Bij wijze van voorbeeld:

In het onderstaande commando gebruiken we de naam voor de parameter Price_from als Price_from=>26000, terwijl we voor de parameter Price_to het positionele begrip 70000 hebben gebruikt, zoals we in het onderstaande commando kunnen zien:

Uitvoer

Na uitvoering van bovenstaand commando geeft PostgreSQL een foutmelding, die zegt dat het positionele argument niet kan volgen op het benoemde argument.

PoatgreSQL Functie

Om de bovenstaande fout op te lossen, gebruiken we de positionele en named notatie voor de get_car_price()-functie, waarbij 26000 wordt gebruikt om de positionele notatie weer te geven; aan de andere kant wordt Price_to=>70000 gebruikt om de named notatie weer te geven:

Uitvoer

Na uitvoering van het bovenstaande commando krijgen we de onderstaande uitvoer, die de auto’s teruggeeft waarvan de auto_prijs tussen 26000 en 70000 ligt.

PoatgreSQL Functie

Overzicht

In de PostgreSQL functie sectie, hebben we de volgende onderwerpen geleerd:

  • We hebben het CREATE Function-commando gebruikt om een door de gebruiker gedefinieerde functie voor een bepaalde tabel te maken.
  • We hebben het proces van het aanroepen van een door de gebruiker gedefinieerde functie begrepen met behulp van verschillende notaties, zoals Positional, Named en Mixed.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *