PostgreSQL Funktionen

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?

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
  • Der Parameter Funktionsname wird verwendet, um den Funktionsnamen zu definieren.
  • 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.

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:

PoatgreSQL Funktion2

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.

PoatgreSQL Funktion

Und wir können die Funktion get_car_Price() in der Funktionsliste identifizieren, wie wir im folgenden Screenshot sehen können:

PoatgreSQL Funktion

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:

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:

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

PoatgreSQL-Funktion

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.

PoatgreSQL-Funktion

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.

PoatgreSQL Funktion

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.

PoatgreSQL-Funktion

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.

PoatgreSQL Funktion

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.