logo

PostgreSQL-functies

In dit gedeelte gaan we de werking van de PostgreSQL-functies, maak een functie commando, en bekijk het realtime voorbeeld van PostgreSQL CREATE FUNCTION-opdracht met behulp van de verschillende tools van PostgreSQL, zoals pgadmin4 En SQL-shell (PSQL).

En zie het voorbeeld van het aanroepen van a door de gebruiker gedefinieerde functie zoals positionele notatie genaamd notatie, de gemengde notatie.

Wat is de PostgreSQL-functie?

Een PostgreSQL-functie of een opgeslagen procedure is een set SQL- en procedurele opdrachten zoals declaraties, toewijzingen, loops, flow-of-control etc. opgeslagen op de databaseserver en kunnen worden betrokken met behulp van de SQL-interface . En het is ook bekend als Opgeslagen PostgreSQL-procedures .

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

Het stelt ons in staat bewerkingen uit te voeren, waarvoor doorgaans verschillende opdrachten en retourvluchten nodig zijn in een functie binnen de database.

Wat is de PostgreSQL CREATE Function-opdracht?

Als we in PostgreSQL een nieuwe, door de gebruiker gedefinieerde functie willen specificeren, kunnen we de CREËER FUNCTIE commando.

Syntaxis van PostgreSQL CREATE Functie-opdracht

De syntaxis voor PostgreSQL CREATE Functieopdracht is als volgt:

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

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

tat volledige vorm
Parameters Beschrijving
functie_naam
  • De functie naam parameter wordt gebruikt om de functienaam te definiëren.
  • De functienaam wordt achter de CREËER FUNCTIE trefwoord.
[OF VERVANGEN]
  • Wij kunnen gebruik maken van de OF VERVANGEN trefwoord als we de huidige functie willen wijzigen.
  • En het is een optionele parameter.
Functie
  • Na gebruik van de OF VERVANGEN trefwoord, we kunnen het definiëren functie parameterlijst die tussen haakjes achter de Functienaam.
  • En een functie kan nul of meerdere parameters bevatten.
OPBRENGST
  • We kunnen het gegevenstype definiëren na de OPBRENGST trefwoord, dat we uit de functie gaan retourneren.
  • Het kan een basis-, samengesteld of domeintype zijn, of een verwijzing naar het type van een tabelkolom.
Taal plpgsql
  • Het wordt gebruikt om de naam te definiëren van de proceduretaal waarin de functie wordt uitgevoerd.
  • En niet alleen plpgsql, de PostgreSQL ondersteunt verschillende proceduretalen.
Functie_lichaam
  • De functie_lichaam bevat de uitvoerbare delen van de logica.

Voorbeeld van PostgreSQL Create Function-opdracht

Laten we een ander voorbeeld bekijken om de werking van de PostgreSQL CREATE-functie commando.

Wij nemen de Auto tafel uit de Javapunt database, gemaakt in de PostgreSQL-zelfstudie.

Een nieuwe functie creëren

In het onderstaande commando maken we een nieuwe functie, die de Auto's van wie Auto_Prijs tussen de Prijs_vanaf en Prijs_naar parameters:

 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 functie is verdeeld in twee hoofdsecties, namelijk Koptekst en functietekst .

We hebben de volgende parameters gebruikt in de Koptekst sectie:

  • In de eerste plaats specificeren we de functienaam als get_car_Price(), welke is geschreven na de functie creëren
  • Daarna werd de get_car_Price() functie bevat twee parameters Prijs vanaf En Prijs_naar, met een integer-gegevenstype.
  • Dan de get_car_Price() functie haalt een geheel getal op dat is gedefinieerd door de return int-voorwaarde.
  • En uiteindelijk hebben we de functietaal gebruikt als plpgsql .

We hebben de volgende parameters gebruikt in de Functie Lichaam sectie:

  • Wij hebben gebruik gemaakt van de tekenreeks met dollarnotering constante illustratie in het functiegedeelte, dat begint met $$ en eindigt met $$ .
  • Tussenin $$ teken, we kunnen een blok plaatsen dat bedekt de verklaring En logica van de functie .
  • In het declaratieblok hebben we een variabele gedeclareerd met de naam Aantal auto's, waarin de auto's worden opgeslagen die zijn geselecteerd uit de Auto
  • In de hoofdtekst van het blokgedeelte hebben we de SELECTEER IN opdracht om de prijs te selecteren van auto's waarvan de waarden tussen liggen Prijs_vanaf en Prijs_naar en geef de uitvoer aan de Aantal auto's
  • Aan het einde van het blok hebben we de OPBRENGST opdracht om de

Een functie maken in PostgreSQL

In PostgreSQL kunnen we op twee manieren een functie maken:

    PostgreSQL Functie maken met pgAdmin PostgreSQL Functie maken met behulp van SQL Shell

PostgreSQL Functie maken met pgAdmin

We gaan het onderstaande proces volgen om een ​​functie in te maken pgAdmin:

Stap 1

Eerst openen we de nieuwste versie pgAdmin in ons lokale systeem, en we gaan naar de objectboom en maken verbinding met de Javapunt voorbeelddatabase waarin we een functie willen maken.

Stap 2

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

Java-trimstring
PoatgreSQL-functie2

Stap 3

Om de get_car_Price1() functie, zullen we de bovenstaande code gebruiken in de hulpprogramma voor zoekopdrachten en klik op de Uitvoeren knop.

Na het implementeren van de bovenstaande opdracht krijgen we het onderstaande berichtvenster waarin wordt weergegeven dat de functie get_car_Price1() is geweest gemaakt met succes in een vergelijkbare database.

PoatgreSQL-functie

En we kunnen de functie identificeren get_car_Price() in de Functies lijst zoals we kunnen zien in de volgende schermafbeelding:

PoatgreSQL-functie

Opmerking: als we de functienaam niet kunnen identificeren, kunnen we met de rechtermuisknop op het knooppunt Functies klikken en het menu-item Vernieuwen... selecteren om de functielijst nieuw leven in te blazen:

PoatgreSQL-functie

Een functie maken met behulp van SQL Shell (psql)

We gaan het onderstaande proces volgen om een ​​tabel te maken psql :

Stap 1

  • Allereerst openen wij de psql in ons lokale systeem, en we zullen verbinding maken met de database waar we een functie willen creëren.
  • We zullen een tabel maken in de Javapunt database, die we eerder in de PostgreSQL-tutorial hebben gemaakt.

Stap 2

  • Om een ​​database te verbinden, voeren we het onderstaande commando in:
 c javatpoint 

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we de volgende uitvoer:

PoatgreSQL-functie

Opmerking: als we een soortgelijke opdracht als hierboven invoeren om een ​​functie te maken, zal deze in psql de onderstaande foutmelding geven, namelijk: de functie get_car_price bestaat al met dezelfde argumenttypen.

PoatgreSQL-functie

Om deze fout op te lossen, maken we daarom een ​​nieuwe functie als get_car_Price1 () in de volgende stap.

Stap 3

javascript opklik

We zullen het onderstaande commando invoeren om een ​​functie te maken als get_car_Price1 () in de Javapunt 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$# $$; 

Uitvoer

We krijgen de volgende uitvoer bij het implementeren van de bovenstaande opdracht, waarin wordt weergegeven dat de get_car_Price_count1() functie is succesvol aangemaakt.

PoatgreSQL-functie

Stap 4

We kunnen de onderstaande opdracht gebruiken om alle door de gebruiker gedefinieerde functies in de bestaande database weer te geven.

 javatpoint=# df 

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we de onderstaande uitvoer:

PoatgreSQL-functie

Hoe u een door de gebruiker gedefinieerde functie kunt oproepen

In PostgreSQL kunnen we de door de gebruiker gedefinieerde functie op drie manieren aanroepen, namelijk:

    Positionele notatie Genoemde notatie De gemengde notatie

Een functie aanroepen met behulp van positionele notatie

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

wat is een interface

Laten we een voorbeeldvoorbeeld bekijken om het te begrijpen Positionele notatie werken om een ​​bepaalde functie aan te roepen.

In het onderstaande voorbeeld is de get_car_price() argumenten zijn 26000 En 70000 , wat gelijk is aan de Prijs vanaf En Prijs_naar parameters.

 Select get_car_Price(26000,70000); 

Uitvoer

We krijgen de volgende uitvoer bij het implementeren van de bovenstaande opdracht, die de vier rijen ophaalt waarvan auto_prijs is tussen 26000 tot 70000.

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 benoemde notatie om de specifieke functie aan te roepen omdat u de benoemde notatie zal de functieaanroep begrijpelijker maken.

Een functie aanroepen met behulp van benoemde notatie

In het onderstaande voorbeeld laten we de werking zien van het aanroepen van de get_car_Price() functie met behulp van de genoemde notatie:

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

Uitvoer

We krijgen de volgende uitvoer bij het uitvoeren van de bovenstaande opdracht, die vier rijen weergeeft op basis van het bovenstaande bereik van auto_prijs .

PoatgreSQL-functie

In de eerder genoemde notatie hebben we de => om de argumenten te onderscheiden naam en waarde .

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

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

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we een vergelijkbare uitvoer als vergeleken met het resultaat van de bovenstaande opdracht, waarbij we de ' =>' in plaats van ':=' .

PoatgreSQL-functie

Een functie aanroepen met behulp van de gemengde notatie

Het is de groepering van positioneel en benoemd notaties.

Laten we een voorbeeldvoorbeeld bekijken om de werking van de te begrijpen Een functie aanroepen met behulp van gemengde notatie.

In de gemengde notatie , we kunnen de genaamd Parameters voor positionele parameters .

Bijvoorbeeld:

In de onderstaande opdracht gebruiken we de genoemd begrip voor Prijs vanaf parameter als Prijs_vanaf=>26000, overwegende dat voor de Prijs_naar parameter, we hebben de positioneel begrip als 70000 , zoals we kunnen zien in het onderstaande commando:

reageer-tabel
 select get_car_Price(Price_from=>26000,70000); 

Uitvoer

Na het uitvoeren van de bovenstaande opdracht geeft PostgreSQL een foutmelding, die zegt dat de positioneel argument kan het genoemde argument niet volgen .

PoatgreSQL-functie

Om de bovenstaande fout op te lossen, gebruiken we de positionele en benoemde notatie voor de get_car_price() functie waar de 26000 wordt gebruikt om de Positionele notatie; aan de andere kant, Prijs_naar=>70000 wordt gebruikt om de benoemde notatie :

 select get_car_Price(26000,Price_to=>70000); 

Uitvoer

Na het uitvoeren van de bovenstaande opdracht krijgen we de onderstaande uitvoer, die de auto's retourneert waarvan auto_prijs ligt tussen 26.000 en 70.000.

PoatgreSQL-functie

Overzicht

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

  • Wij hebben gebruik gemaakt van de CREATE-functie opdracht om een ​​door de gebruiker gedefinieerde functie voor de specifieke tabel te maken.
  • Wij hebben het proces begrepen het aanroepen van een door de gebruiker gedefinieerde functie met behulp van verschillende notaties zoals Positioneel, benoemd en gemengd.