Fonctions PostgreSQL

Dans cette section, nous allons comprendre le fonctionnement des fonctions PostgreSQL, la commande create function, et voir l’exemple en temps réel de la commande PostgreSQL CREATE FUNCTION en utilisant les différents outils de PostgreSQL tels que pgadmin4 et le shell SQL (PSQL).

Et voir l’exemple d’appel d’une fonction définie par l’utilisateur comme la notation positionnelle nommée, la notation mixte.

Qu’est-ce que la fonction PostgreSQL ?

Une fonction PostgreSQL ou une procédure stockée est un ensemble de commandes SQL et procédurales telles que des déclarations, des affectations, des boucles, des flux de contrôle, etc. stockées sur le serveur de base de données et pouvant être impliquées en utilisant l’interface SQL. Et il est également connu sous le nom de procédures stockées PostgreSQL.

Nous pouvons créer des fonctions PostgreSQL dans serval langages, par exemple, SQL, PL/pgSQL, C, Python etc.

Il nous permet d’effectuer des opérations, qui prendraient généralement diverses commandes et allers-retours dans une fonction au sein de la base de données.

Qu’est-ce que la commande PostgreSQL CREATE Function ?

Dans PostgreSQL, si nous voulons spécifier une nouvelle fonction définie par l’utilisateur, nous pouvons utiliser la commande CREATE FUNCTION.

Syntaxe de la commande PostgreSQL CREATE Function

La syntaxe de la commande PostgreSQL CREATE Function est la suivante :

Dans la syntaxe ci-dessus, nous avons utilisé les paramètres suivants, comme indiqué dans le tableau ci-dessous :

Paramètres Description
nom_fonction
  • Le paramètre nom de la fonction est utilisé pour définir le nom de la fonction.
  • 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.

Nous avons utilisé les paramètres suivants dans la section Header:

  • Primairement, nous spécifions le nom de la fonction comme get_car_Price(), qui est écrit après la fonction create
  • Après cela, la fonction get_car_Price() contient deux paramètres Price_from et Price_to, ayant le type de données integer.
  • Puis, la fonction get_car_Price() récupère un entier défini par la condition return int.
  • Et à la fin, nous avons utilisé le langage de la fonction comme plpgsql.

Nous avons utilisé les paramètres suivants dans la section Corps de la fonction :

  • Nous avons utilisé l’illustration de la chaîne de caractèresconstante en dollars dans la section de la fonction, qui commence par $$ et se termine par $$.
  • En entre le signe $$, nous pouvons placer un bloc, qui couvre la déclaration et la logique de la fonction.
  • Dans le bloc de déclaration, nous avons déclaré une variable appelée Car_count,qui stocke les voitures sélectionnées dans la section Car
  • Dans le corps de la section du bloc, nous avons utilisé la commande SELECT INTO pour sélectionner le prix des voitures dont les valeurs sont comprises entre Price_from et Price_to et donner la sortie au Car_count
  • À la fin du bloc, nous avons utilisé la commande RETURN pour obtenir le

Création d’une fonction dans PostgreSQL

Dans PostgreSQL, nous pouvons créer une fonction de deux manières :

  • Créer une fonction PostgreSQL en utilisant pgAdmin
  • Créer une fonction PostgreSQL en utilisant SQL Shell

Créer une fonction PostgreSQL en utilisant pgAdmin

Nous allons suivre le processus ci-dessous pour créer une fonction dans pgAdmin :

Etape1

D’abord, nous allons ouvrir la dernière version de pgAdmin dans notre système local, et nous allons aller dans l’arbre d’objets et nous connecter à la base de données exemple Javatpoint dans laquelle nous voulons créer une fonction.

Etape2

Après cela, nous ouvrirons l’outil de requête en cliquant sur Outil de requête suivi de la section Outils, comme nous pouvons le voir dans la capture d’écran ci-dessous :

Fonction PoatgreSQL2

Etape3

Pour créer la fonction get_car_Price1(), nous utiliserons le code ci-dessus dans l’outil de requête et cliquerons sur le bouton Exécuter.

Après avoir mis en œuvre la commande ci-dessus, nous obtiendrons la fenêtre de message ci-dessous affichant que la fonction get_car_Price1() a été créée avec succès dans une base de données similaire.

Fonction PoatgreSQL

Et, nous pouvons identifier la fonction get_car_Price() dans la liste des fonctions comme nous pouvons le voir dans la capture d’écran suivante :

Fonction PoatgreSQL

Note : Si nous ne pouvons pas identifier le nom de la fonction, nous pouvons cliquer avec le bouton droit de la souris sur le nœud Fonctions et sélectionner l’option de menu Rafraîchir… 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:

  • Notation positionnelle
  • Notation nominative
  • La notation mixte

Appeler une fonction en utilisant la notation positionnelle

Si nous voulons décrire les arguments dans un ordre similaire à celui des paramètres, nous pouvons appeler une fonction avec l’aide de la notation positionnelle.

Voyons un exemple pour comprendre le fonctionnement de la notation positionnelle pour appeler une fonction particulière.

Dans l’exemple ci-dessous, les arguments de get_car_price() sont 26000 et 70000, ce qui est équivalent aux paramètres Price_from et Price_to.

Sortie

Nous obtiendrons la sortie suivante lors de la mise en œuvre de la commande ci-dessus, qui récupère ces quatre lignes dont le prix_voiture est compris entre 26000 et 70000.

Fonction PoatgreSQL

Lorsque la fonction n’a pratiquement pas de paramètres, nous pouvons appeler une fonction à l’aide de la notation positionnelle.

Si la fonction contient plusieurs paramètres, nous pouvons utiliser la notation nommée pour appeler la fonction particulière car l’utilisation de la notation nommée rendra l’appel de la fonction plus compréhensible.

Appeler une fonction en utilisant la notation nommée

Dans l’exemple ci-dessous, nous affichons le fonctionnement de l’appel de la fonction get_car_Price() en utilisant la notation nommée :

Sortie

Nous obtiendrons la sortie suivante lors de l’exécution de la commande ci-dessus, qui affiche quatre lignes basées sur la plage de prix de la voiture ci-dessus.

Fonction PoatgreSQL

Dans la notation mentionnée précédemment, nous avons utilisé le => pour distinguer le nom et la valeur de l’argument.

PostgreSQL autorise l’ancienne syntaxe créée sur := pour la compatibilité ascendante, comme nous pouvons le voir dans la commande suivante :

Sortie

Après avoir exécuté la commande ci-dessus, nous obtiendrons une sortie similaire par rapport au résultat de la commande ci-dessus où nous utilisons le ‘=>’ au lieu de ‘:=’.

Fonction PoatgreSQL

Appeler une fonction en utilisant la notation mixte

C’est le regroupement des notations positionnelle et nommée.

Voyons un exemple pour comprendre le fonctionnement de l’Appel d’une fonction en utilisant la notation mixte.

Dans la notation mixte, nous ne pouvons pas utiliser les Paramètres nommés avant les Paramètres positionnels.

Par exemple :

Dans la commande ci-dessous, nous utiliserons la notion nommée pour le paramètre Price_from comme Price_from=>26000, alors que pour le paramètre Price_to, nous avons utilisé la notion positionnelle comme 70000, comme nous pouvons le voir dans la commande ci-dessous :

Sortie

Après avoir exécuté la commande ci-dessus, PostgreSQL soulève une erreur, qui dit que l’argument positionnel ne peut pas suivre l’argument nommé.

Fonction PostgreSQL

Pour résoudre l’erreur ci-dessus, nous utilisons la notation positionnelle et nommée pour la fonction get_car_price() où le 26000 est utilisé pour représenter la notation positionnelle ; d’autre part, Price_to=>70000 est utilisé pour représenter la notation nommée :

Sortie

Après avoir exécuté la commande ci-dessus, nous obtiendrons la sortie ci-dessous, qui renvoie les voitures dont le prix_voiture est compris entre 26000 et 70000.

Fonction PostgreSQL

Aperçu

Dans la section sur les fonctions PostgreSQL, nous avons appris les sujets suivants :

  • Nous avons utilisé la commande CREATE Function pour créer une fonction définie par l’utilisateur pour la table particulière.
  • Nous avons compris le processus d’appel d’une fonction définie par l’utilisateur à l’aide de différentes notations telles que Positional, Named et Mixed.

Les fonctions définies par l’utilisateur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *