Comment créer, modifier, appeler et supprimer une fonction SQL Server

Lorsque l’on commence le développement T-SQL en utilisant les fonctions SQL Server, il faut apprendre les syntaxes et éviter les erreurs, sinon le SQL devient frustrant. Cet article présente le code pour créer, modifier, appeler et supprimer les fonctions SQL Server. Il existe deux types de fonctions SQL Server qui sont les fonctions définies par l’utilisateur et les fonctions intégrées et donc natives. Ici nous ne traiterons que des fonctions créer par l’utilisateur, c’est à dire vous.

Comment gérer les fonctions SQL Server définies par l’utilisateur?

Une fonction SQL Server définie par l’utilisateur est un programme Transact-SQL qui accepte des paramètres en entrée, exécutes des actions, comme par exemple lire une table SQL et qui retourne un résultat en sortie.

Voici des exemples de code simple pour gérer les fonctions:

  1. Créer une fonction Sql Server
  2. Modifier une fonction Sql Server
  3. Supprimer une fonction Sql Server
  4. Tester l’existence d’une fonction Sql Server avant de la supprimer
  5. Appeler une fonction Sql Server

Pour commencer, créer au préalable la table client avec le code disponible sur cette page:

Code de création de la table d’exemple CLIENTS

1. Comment créer une fonction SQL Server?

Cette fonction prend comme paramètre en entrée le numéro de client et retourne le nom du client stocké dans la variable @NomClient.

CREATE FUNCTION dbo.ufnListeClients(@NoClient INTEGER)
RETURNS NVARCHAR(20)
AS 
BEGIN 
  DECLARE	@NomClient	AS NVARCHAR(20);
  SELECT	@NomClient = [NOM]
  FROM		dbo.CLIENTS
  WHERE		[NOCLIENT] = @NoClient;
  RETURN	@NomClient;
END
GO

 

2. Comment modifier une fonction SQL Server?

Cette commande permet de modifier la fonction créer plus haut pour que cette fois elle ne retourne pas uniquement le nom du client, mais également la ville du client, séparé par un trait. Le résultat de la fonction est stocké dans la variable @NomVilleClient.

ALTER FUNCTION dbo.ufnListeClients(@NoClient INTEGER)
RETURNS NVARCHAR(40)
AS 
BEGIN 
  DECLARE	@NomVilleClient	AS NVARCHAR(20);
  SELECT	@NomVilleClient = [NOM] + '-' + [VILLE] 
  FROM		dbo.CLIENTS
  WHERE		[NOCLIENT] = @NoClient;
  RETURN	@NomVilleClient;
END
GO

 

3. Comment supprimer une fonction SQL Server?

Cette commande SQL permet de supprimer une fonction, sans toutefois faire de test d’existence.

DROP FUNCTION ufnListeClients;
GO

Si la fonction n’était pas dans la base de données alors cette erreur est affichée:

Msg 3701, Level 11, State 5, Line 1
Cannot drop the function ‘ufnListeClients’, because it does not exist or you do not have permission.

4. Comment tester l’existence d’une fonction SQL Server avant de la supprimer?

Pour éviter cette erreur, il suffit d’ajouter une commande pour tester l’existence de la fonction au préalable.

IF OBJECT_ID (N'dbo.ufnListeClients', N'FN') IS NOT NULL  
    DROP FUNCTION ufnListeClients;  
GO

 

5. Comment appeler une fonction SQL Server?

Pour appeler une fonction, utiliser un SELECT suivi du nom de la fonction sans oublier le paramètre, ici c’est le numéro de client.

Par exemple la première commande retourne le nom du client correspondant au numéro de client 1 et ne nomme pas la colonne.

SELECT dbo.ufnListeClients(1);

 

Enfin cet appel de la fonction retourne le nom du client dans une colonne nommée « CLIENTS ».

SELECT dbo.ufnListeClients(1) AS CLIENT;

Pour avoir plus d’informations sur les fonctions SQL Server, vous pouvez lire directement la documentation sur le site de Microsoft, je trouve que la documentation en version Anglaise est plus riche et plus complète que la version Française.

https://docs.microsoft.com/en-us/sql/relational-databases/user-defined-functions/user-defined-functions?view=sql-server-2017

Soyez le premier à commenter

Laisser un commentaire