Gérer les fonctions SQL Server utilisateur

Comment gérer les fonctions SQL Server utilisateur ? 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. Ces exemples sql de fonctions définies par l’utilisateur présentent la syntaxe des principales opérations SQL Server. Comme par exemple Create Function.

Tout d’abord, il existe deux types de fonctions SQL Server qui sont les fonctions définies par les utilisateurs et les fonctions intégrées et donc natives. Cet article traite des fonctions créées par l’utilisateur.

Comment gérer les fonctions SQL Server utilisateur avec des scripts ?

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 avec Create Function ?

Premièrement, la création d’une fonction qui prend comme paramètre en entrée le numéro de client et retourne le nom du client stocké dans la variable @NomClient.

Le script de création SQL Server create function doit obligatoirement retourner une valeur.

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 avec Alter Function ?

Deuxièmement, la commande ALTER 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 avec Drop Function ?

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

L’option DROP FUNCTION IF EXISTS

Depuis SQL Server 2016, il est plus facile de supprimer un objet de la base de données. Il suffit d’utiliser ce code d’une seule ligne qui ne supprime la fonction uniquement si elle dans la base.

DROP FUNCTION IF EXISTS ufnListeClients;

 5. Comment appeler une fonction Microsoft SQL ?

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. La documentation en version Anglaise est plus riche et plus complète que la version Française.

Soyez le premier à commenter

Laisser un commentaire