Supprimer une fonction SQL Server avec un script T-SQL

Comment supprimer une fonction SQL Server utilisateur avec un script T-SQL ?

Comment supprimer une fonction SQL, aussi appelée fonction Microsoft définie par l’utilisateur ? Cette commande SQL permet de supprimer complètement une fonction SQL Server. Cependant, elle ne vérifie pas si la fonction existe. Ce tutoriel montre comment procéder à l’aide d’un exemple simple.

1. Supprimer une fonction MS SQL avec un script T-SQL depuis SSMS

Premièrement, utiliser ce code T-SQL pour supprimer une fonction SQL Server de la base de données. Le résultat de la commande est permanent et donc irréversible. Il faut donc s’assurer d’avoir des sauvegardes fonctionnelles et disponibles du code et des bases de données. C’est à dire les fichiers MDF et LDF, qui sont les fichiers des bases et des journaux.

Comment éviter les erreurs dans le cas où l’objet n’est plus dans la base de données ? Utiliser un contrôle d’existence avant d’appeler la commande de suppression. En effet, le code suivant supprime la fonction nommée ufnListeClients. Créée à partir de ce tutoriel pour créer une fonction SQL Server avec un script.

DROP FUNCTION ufnListeClients;

Cet exemple basique montre la syntaxe de la commande DROP FUNCTION. Pour aller plus loin sur les fonctions, consulter les tutoriels sur les fonctions SQL Server avec plus d’exemples de code pour les gérer. Consulter également la documentation Microsoft sur les fonctions, les différents types et leur utilisation, par exemple les fonctions d’agrégations, scalaires ou analytiques.

2. Script pour vérifier si une fonction existe avant de la supprimer

De plus, pour éviter les erreurs pendant l’exécution du script, utiliser une vérification avant la suppression. Utiliser cet exemple de code pour vérifier l’existence de la fonction dans la base de données. Le script utilise la table système sys.objects et la fonction object_id pour obtenir l’identifiant technique de la fonction.

IF EXISTS (
	SELECT * FROM sys.objects
	WHERE object_id = object_id(N'[dbo].[ufnListeClients]')
	AND type in (N'FN')
)
BEGIN
	DROP FUNCTION [dbo].[ufnListeClients]
END ;

Depuis SQL Server 2016, ce script manuel est intégré dans une nouvelle fonction, il suffit d’utiliser l’instruction IF EXISTS DROP FUNCTION combinés. Cette instruction n’exécute pas de script si la fonction n’est pas disponible dans la base de données cible.

IF EXISTS DROP FUNCTION [dbo].[uufnListeClients] ;

3. Script T-SQL pour supprimer toutes les fonctions définies par l’utilisateur

Pour aller plus loin, voici comment supprimer toutes les fonctions définies par l’utilisateur en une seule fois. Il suffit d’inclure ce script DROP Function dans une procédure stockée avec une boucle. La boucle doit prendre le nom de toutes les fonctions définies par l’utilisateur. C’est à dire qu’il faut filtrer le type d’objets et conserver uniquement les fonctions UDF, pour User Defined Functions, stocker le nom dans une variable et exécuter l’instruction de suppression.

Enfin, nous avons vu plusieurs façons de supprimer une fonction SQL Server avec un script T-SQL. Voici comment supprimer une table avec une requête T-SQL.