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 ?
- Qu’est-ce que la commande PostgreSQL CREATE Function ?
- Syntaxe de la commande PostgreSQL CREATE Function
- Example of PostgreSQL Create Function Command
- Creating a new function
- Création d’une fonction dans PostgreSQL
- Créer une fonction PostgreSQL en utilisant pgAdmin
- 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:
- 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
- Appeler une fonction en utilisant la notation positionnelle
- Appeler une fonction en utilisant la notation nommée
- Appeler une fonction en utilisant la notation mixte
- Aperçu
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 |
|
|
|
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.
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 :
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.
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 :
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:
- 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.
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.
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 ‘:=’.
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é.
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.
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.