Supprimer une fonction SQL Server avec un script

Comment supprimer une fonction SQL Server avec un script ? Ou comment supprimer une fonction SQL Server, aussi appelée fonction définie par l’utilisateur ? Cette commande SQL permet de se débarrasser d’une fonction SQL Server. Cependant, elle ne vérifie pas si la fonction existe. Cet article montre comment procéder à l’aide d’un exemple très simple.

Comment supprimer une fonction SQL avec un script ?

Premièrement, utilisez ce code T-SQL pour supprimer une fonction SQL Server de la base de données, le résultat de la commande sera permanent. Assurez-vous d’avoir des sauvegardes du code et des bases de données. Pour éviter les erreurs dans le cas où l’objet n’est plus dans la base de données, utilisez un contrôle d’existence avant d’appeler la commande de suppression.

En effet, considérer que nous avons créé la fonction nommée ufnListeClients à partir de cet article sur comment créer une fonction SQL.

DROP FUNCTION ufnListeClients;

Cet exemple de base montre la syntaxe de la commande DROP FUNCTION. Pour aller plus loin sur les fonctions, consultez la catégorie des fonctions SQL Server avec plus d’articles sur la façon de les gérer.

Consultez également la documentation Microsoft sur les fonctions, leurs différents types et leur utilisation, par exemple les fonctions d’aggrégations, scalaires ou analytiques.

Vérifiez si la fonction existe avant de la supprimer

De plus, pour éviter les erreurs pendant l’exécution du script, il est préférable d’utiliser une vérification avant la suppression. Utilisez cet exemple de script pour vérifier l’existence dans la base de données, en utilisant la table système nommée 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, plus besoin d’utiliser ce long script, il suffit d’utiliser l’instruction IF EXISTS DROP FUNCTION COMBINED. Cette instruction n’exécute pas de script est la fonction n’est pas disponible dans la base de données cible.

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

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. Par ailleurs appelées fonctions UDF pour User Defined Functions, 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.