In diesem Abschnitt werden wir die Funktionsweise der PostgreSQL Funktionen, den Befehl CREATE FUNCTION verstehen und das Echtzeit-Beispiel des PostgreSQL Befehls CREATE FUNCTION unter Verwendung der verschiedenen Werkzeuge von PostgreSQL wie pgadmin4 und SQL Shell (PSQL) sehen.
Und sehen Sie das Beispiel des Aufrufs einer benutzerdefinierten Funktion, wie z.B. die Positionsnotation, die benannte Notation, die gemischte Notation.
- Was ist eine PostgreSQL Funktion?
- Was ist der PostgreSQL-Befehl CREATE FUNCTION?
- Syntax des PostgreSQL CREATE Function Befehls
- Example of PostgreSQL Create Function Command
- Creating a new function
- Erstellen einer Funktion in PostgreSQL
- PostgreSQL Create Function using pgAdmin
- Hinweis: Wenn wir den Funktionsnamen nicht identifizieren können, können wir mit der rechten Maustaste auf den Knoten Funktionen klicken und den Menüpunkt Aktualisieren… 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
- Aufruf einer Funktion mit Positionsnotation
- Aufruf einer Funktion unter Verwendung der benannten Notation
- Aufruf einer Funktion unter Verwendung der gemischten Notation
- Übersicht
Was ist eine PostgreSQL Funktion?
Eine PostgreSQL Funktion oder eine gespeicherte Prozedur ist ein Satz von SQL und prozeduralen Befehlen, wie z.B. Deklarationen, Zuweisungen, Schleifen, Kontrollflüsse usw., die auf dem Datenbankserver gespeichert sind und über die SQL Schnittstelle eingebunden werden können. Sie wird auch als PostgreSQL Stored Procedure bezeichnet.
Wir können PostgreSQL-Funktionen in verschiedenen Sprachen erstellen, z.B. SQL, PL/pgSQL, C, Python usw.
Sie ermöglicht es uns, Operationen auszuführen, die normalerweise verschiedene Befehle und Roundtrips in einer Funktion innerhalb der Datenbank erfordern würden.
Was ist der PostgreSQL-Befehl CREATE FUNCTION?
Wenn wir in PostgreSQL eine neue benutzerdefinierte Funktion angeben wollen, können wir den Befehl CREATE FUNCTION verwenden.
Syntax des PostgreSQL CREATE Function Befehls
Die Syntax für den PostgreSQL CREATE Function Befehl ist wie folgt:
In der obigen Syntax haben wir die folgenden Parameter verwendet, wie in der folgenden Tabelle gezeigt:
Parameter | Beschreibung |
---|---|
Funktionsname |
|
|
|
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.
Im Header-Abschnitt haben wir folgende Parameter verwendet:
- Zunächst geben wir den Funktionsnamen als get_car_Price() an, der nach der Funktion create geschrieben wird
- Danach enthält die Funktion get_car_Price() zwei Parameter Price_from und Price_to, die den Datentyp integer haben.
- Dann ruft die Funktion get_car_Price() eine Ganzzahl ab, die durch die Bedingung return int definiert ist.
- Und am Ende haben wir die Funktionssprache als plpgsql verwendet.
Im Abschnitt Function Body haben wir die folgenden Parameter verwendet:
- Wir haben im Funktionsabschnitt die in Dollarzeichen stehende Zeichenketteconstant verwendet, die mit $$ beginnt und mit $$ endet.
- Zwischen dem $$-Zeichen können wir einen Block platzieren, der die Deklaration und die Logik der Funktion umfasst.
- Im Deklarationsblock haben wir eine Variable namens Car_count deklariert, die die aus dem Car ausgewählten Autos speichert
- Im Körper des Blockabschnitts, haben wir den SELECT INTO-Befehl verwendet, um den Preis der Autos auszuwählen, deren Werte zwischen Price_from und Price_to liegen, und die Ausgabe an Car_count zu übergeben
- Am Ende des Blocks haben wir den RETURN-Befehl verwendet, um die
Erstellen einer Funktion in PostgreSQL
In PostgreSQL können wir eine Funktion auf zwei Arten erstellen:
- PostgreSQL Create Function using pgAdmin
- PostgreSQL Create Function using SQL Shell
PostgreSQL Create Function using pgAdmin
Wir werden dem folgenden Prozess folgen, um eine Funktion in pgAdmin zu erstellen:
Schritt1
Zunächst öffnen wir die neueste Version von pgAdmin in unserem lokalen System, gehen zum Objektbaum und verbinden uns mit der Javatpoint-Beispieldatenbank, in der wir eine Funktion erstellen wollen.
Schritt2
Danach öffnen wir das Abfragetool, indem wir auf das Abfragetool klicken, gefolgt von der Sektion Tools, wie im folgenden Screenshot zu sehen ist:
Schritt3
Um die Funktion get_car_Price1() zu erstellen, verwenden wir den obigen Code im Abfragetool und klicken auf die Schaltfläche Execute.
Nach der Implementierung des obigen Befehls erhalten wir das folgende Meldungsfenster, das anzeigt, dass die Funktion get_car_Price1() erfolgreich in einer ähnlichen Datenbank erstellt wurde.
Und wir können die Funktion get_car_Price() in der Funktionsliste identifizieren, wie wir im folgenden Screenshot sehen können:
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:
- Positionsnotation
- Namensnotation
- Die gemischte Notation
Aufruf einer Funktion mit Positionsnotation
Wenn wir die Argumente in einer ähnlichen Reihenfolge wie die Parameter beschreiben wollen, können wir eine Funktion mit Hilfe der Positionsnotation aufrufen.
Lassen Sie uns ein Beispiel sehen, um zu verstehen, wie die Positionsnotation funktioniert, um eine bestimmte Funktion aufzurufen.
Im folgenden Beispiel sind die Argumente von get_car_price() 26000 und 70000, was den Parametern Price_from und Price_to entspricht.
Ausgabe
Bei der Implementierung des obigen Befehls erhalten wir die folgende Ausgabe, die die vier Zeilen abruft, deren Autopreis zwischen 26000 und 70000 liegt.
Wenn die Funktion kaum Parameter hat, können wir eine Funktion mit Hilfe der Positionsnotation aufrufen.
Wenn die Funktion mehrere Parameter enthält, können wir die benannte Notation verwenden, um die jeweilige Funktion aufzurufen, da die benannte Notation den Funktionsaufruf verständlicher macht.
Aufruf einer Funktion unter Verwendung der benannten Notation
Im folgenden Beispiel zeigen wir, wie der Aufruf der Funktion get_car_Price() unter Verwendung der benannten Notation funktioniert:
Ausgabe
Wenn wir den obigen Befehl ausführen, erhalten wir die folgende Ausgabe, die vier Zeilen auf der Grundlage des obigen Bereichs von car_price anzeigt.
In der oben erwähnten Notation haben wir das => verwendet, um den Namen und den Wert des Arguments zu unterscheiden.
PostgreSQL erlaubt aus Gründen der Abwärtskompatibilität die ältere Syntax, die mit := erstellt wurde, wie wir im folgenden Befehl sehen können:
Ausgabe
Nach der Ausführung des obigen Befehls erhalten wir eine ähnliche Ausgabe wie das Ergebnis des obigen Befehls, bei dem wir das ‚=>‘ anstelle von ‚:=‘ verwenden.
Aufruf einer Funktion unter Verwendung der gemischten Notation
Es handelt sich um die Gruppierung von positionalen und benannten Notationen.
Lassen Sie uns ein Beispiel sehen, um die Funktionsweise des Funktionsaufrufs in gemischter Notation zu verstehen.
In der gemischten Notation können wir die benannten Parameter nicht vor den positionalen Parametern verwenden.
Zum Beispiel:
Im folgenden Befehl verwenden wir den benannten Begriff für den Parameter Price_from als Price_from=>26000, während wir für den Parameter Price_to den Positionsbegriff 70000 verwendet haben, wie wir im folgenden Befehl sehen können:
Ausgabe
Nach der Ausführung des obigen Befehls gibt PostgreSQL einen Fehler aus, der besagt, dass das Positionsargument nicht auf das benannte Argument folgen kann.
Um den obigen Fehler zu beheben, verwenden wir die Positions- und die benannte Notation für die Funktion get_car_price(), wobei die 26000 verwendet wird, um die Positionsnotation darzustellen; auf der anderen Seite wird Price_to=>70000 verwendet, um die benannte Notation darzustellen:
Ausgabe
Nach Ausführung des obigen Befehls erhalten wir die folgende Ausgabe, die diejenigen Autos zurückgibt, deren car_price zwischen 26000 und 70000 liegt.
Übersicht
Im Abschnitt PostgreSQL Funktion haben wir die folgenden Themen kennengelernt:
- Wir haben den CREATE FunctionBefehl verwendet, um eine benutzerdefinierte Funktion für eine bestimmte Tabelle zu erstellen.
- Wir haben den Prozess des Aufrufs einer benutzerdefinierten Funktion mit Hilfe verschiedener Notationen wie Positional, Named und Mixed verstanden.