Supprimer une Procédure ou une Fonction d’une Base de Données
De nombreuses nuances doivent être prises en compte lors du développement d’outils qui interagissent avec divers SGBD, car les mêmes opérations peuvent être implémentées de différentes manières, et une norme SQL peut également être prise en charge de différentes façons.
Lorsqu’on considère un nombre suffisant de SGBD, il s’avère qu’il n’existe pas de méthode universelle pour supprimer une fonction ou une procédure.
Seuls les SGBD relationnels sont pris en compte dans cet article.
PostgreSQL
Il est possible de créer 2 types de fonctions dans PostgreSQL : normales et agrégées. Les procédures peuvent être créées depuis la version 11 sortie à la fin de 2018. Les fonctions, y compris les fonctions agrégées, sont disponibles dans les versions antérieures.
En utilisant l’instruction DROP ROUTINE, il est possible de supprimer n’importe quelle fonction ou procédure. La syntaxe de la requête :
DROP ROUTINE nom_de_fonction_ou_procédure(types_d_arguments)
où :
- types_d_arguments – types d’arguments séparés par une virgule.
Par exemple :
DROP ROUTINE ma_fonction(INTEGER, INTEGER)
Il peut exister des fonctions et des procédures avec le même nom mais avec des arguments différents. Créer une fonction avec le même nom est appelé surcharge de fonction. Pour éviter toute ambiguïté lors de la suppression de procédures ou de fonctions, les arguments doivent être spécifiés. Si la fonction ou la procédure n’est pas surchargée, il n’est pas nécessaire de spécifier les types d’arguments lors de sa suppression :
DROP ROUTINE nom_de_fonction_ou_procédure
Il existe des instructions distinctes pour supprimer respectivement les fonctions agrégées, normales, et les procédures :
- DROP AGGREGATE
- DROP FUNCTION
- DROP PROCEDURE
La syntaxe de ces instructions est la même que celle de DROP ROUTINE.
Les instructions DROP ROUTINE et DROP PROCEDURE ainsi que les procédures sont apparues dans la version 11. Les instructions DROP AGGREGATE et DROP FUNCTION sont utilisées pour supprimer des fonctions dans les versions antérieures.
ORACLE
L’instruction suivante est utilisée pour supprimer des procédures dans Oracle :
DROP PROCEDURE nom_de_procédure
L’instruction similaire à la précédente est utilisée pour supprimer des fonctions :
DROP FUNCTION nom_de_fonction
Par exemple :
DROP PROCEDURE ma_procédure;
Les fonctions et les procédures peuvent être autonomes ou peuvent être créées dans une collection en utilisant un paquetage. Pour supprimer des fonctions et des procédures d’un paquetage, il est possible uniquement de supprimer ou de redéfinir le paquetage.
Les fonctions et procédures autonomes ne peuvent pas être surchargées, il n’est donc pas nécessaire de spécifier les types d’arguments lors de leur suppression.
MySQL et MariaDB
L’instruction suivante est utilisée pour supprimer des procédures dans MySQL et MariaDB :
DROP PROCEDURE nom_de_procédure
L’instruction similaire à la précédente est utilisée pour supprimer des fonctions :
DROP FUNCTION nom_de_fonction
MySQL et MariaDB ne supportent pas la surcharge des procédures ou des fonctions ; par conséquent, seul le nom est spécifié.
Depuis la version 10.3.3 (23 décembre 2017) il est possible de créer des fonctions agrégées dans MariaDB. Les fonctions agrégées sont supprimées comme les fonctions normales en utilisant l’instruction DROP FUNCTION.
SQLite
SQLite ne supporte pas la création de procédures et de fonctions, il n’existe donc pas d’instruction pour les supprimer.
MS SQL Server
Les instructions suivantes sont utilisées pour supprimer des procédures, des fonctions normales, et des fonctions agrégées dans MS SQL :
DROP PROCEDURE nom_de_procédure
DROP FUNCTION nom_de_fonction_normale
DROP AGGREGATE nom_de_fonction_agrégée
MS SQL ne supporte pas la surcharge des procédures et des fonctions ; donc, lors de la suppression, seul le nom est spécifié.
Contrairement aux procédures et aux fonctions normales, les fonctions agrégées dans MS SQL ne se réfèrent qu’à une implémentation externe.
Netezza
Les instructions suivantes sont utilisées pour supprimer des procédures, des fonctions normales, et des fonctions agrégées dans Netezza :
DROP PROCEDURE nom_de_procédure(types_d_arguments)
DROP FUNCTION nom_de_fonction_normale(types_d_arguments)
DROP AGGREGATE nom_de_fonction_agrégée(types_d_arguments)
où :
- types_d_arguments – types d’arguments séparés par une virgule.
Netezza supporte la surcharge des fonctions et des procédures ; par conséquent, les types d’arguments sont nécessaires. Contrairement aux procédures, les fonctions dans Netezza se réfèrent uniquement à une implémentation externe.
Informix
Les instructions suivantes sont utilisées pour supprimer des procédures, des fonctions normales, et des fonctions agrégées dans Informix :
DROP PROCEDURE nom_de_procédure(types_d_arguments)
DROP FUNCTION nom_de_fonction_normale(types_d_arguments)
DROP AGGREGATE nom_de_fonction_agrégée
où :
- types_d_arguments – types d’arguments séparés par une virgule.
Il n’est pas nécessaire de spécifier les types d’arguments pour les fonctions agrégées.
Il est possible de surcharger des procédures ; par conséquent, plusieurs procédures peuvent avoir le même nom. Pour les distinguer, il est possible de donner un nom unique à une procédure lors de sa création. Cela est également vrai pour les fonctions normales. Un nom unique peut être utilisé pour supprimer des procédures et des fonctions normales dans les instructions suivantes :
DROP SPECIFIC PROCEDURE nom_unique_de_procédure
DROP SPECIFIC FUNCTION nom_unique_de_fonction_normale
Si une procédure ou une fonction normale n’a pas de surcharge, il n’est alors pas nécessaire de spécifier les types d’arguments lors de leur suppression :
DROP PROCEDURE nom_de_procédure
DROP FUNCTION nom_de_fonction_normale
L’instruction suivante permet de supprimer une procédure ou une fonction normale :
DROP ROUTINE nom(types_d_arguments)
ou dans le cas où il n’y a pas de surcharge :
DROP ROUTINE nom
Cette instruction est utile lorsqu’il est inconnu ce qui doit être supprimé – une procédure ou une fonction.
De plus, un nom unique peut être utilisé pour supprimer :
DROP SPECIFIC ROUTINE nom_unique
IBM Db2
Les instructions suivantes sont utilisées pour supprimer des procédures et des fonctions dans IBM Db2 :
DROP PROCEDURE nom_de_procédure(types_d_arguments)
DROP FUNCTION nom_de_fonction(types_d_arguments)
où :
- types_d_arguments – types d’arguments séparés par une virgule.
Les procédures peuvent être surchargées ; par conséquent, plusieurs procédures peuvent avoir le même nom. Pour les définir, il est possible de définir une valeur unique lors de la création d’une procédure. Cela est également vrai pour les fonctions. Un nom unique peut être utilisé pour supprimer des procédures et des fonctions via les instructions suivantes :
DROP SPECIFIC PROCEDURE nom_unique_de_procédure
DROP SPECIFIC FUNCTION nom_unique_de_fonction
Si une procédure ou une fonction n’a pas de surcharge, il n’est pas nécessaire de spécifier les types d’arguments lors de leur suppression :
DROP PROCEDURE nom_de_procédure
DROP FUNCTION nom_de_fonction
AWS Athena
Athena ne supporte pas la création de procédures et de fonctions ; par conséquent, il n’y a pas de possibilité de les supprimer.
Teradata
Les instructions suivantes sont utilisées pour supprimer des procédures et des fonctions dans Teradata :
DROP PROCEDURE nom_de_procédure
DROP FUNCTION nom_de_fonction(types_d_arguments)
où :
- types_d_arguments – types d’arguments séparés par une virgule.
Teradata permet de surcharger une fonction (mais pas une procédure). Dans une instruction CREATE FUNCTION, en plus du nom de la fonction, il est nécessaire de spécifier un nom unique de la fonction lors de la surcharge. En utilisant un nom unique, il est possible de supprimer une fonction à l’aide de l’instruction suivante :
DROP SPECIFIC FUNCTION nom_unique_de_fonction
Si une fonction n’a pas de surcharge, il est possible de ne pas spécifier les types d’arguments lors de sa suppression :
DROP FUNCTION nom_de_fonction
Teradata supporte les macros qui ressemblent quelque peu aux procédures. L’instruction suivante est utilisée pour supprimer des macros :
DROP MACRO nom_de_macro
Vertica
Vertica permet la création de nouvelles procédures (instruction CREATE PROCEDURE), qui se réfèrent à un fichier exécutable externe. Les procédures stockées ne sont pas prises en charge.
L’instruction suivante est utilisée pour supprimer des procédures :
DROP PROCEDURE nom_de_procédure(types_d_arguments)
où :
- types_d_arguments – types d’arguments séparés par une virgule.
Les procédures peuvent être surchargées. Les types d’arguments sont nécessaires même si la procédure n’a pas de surcharge.
Vertica supporte de nombreux types de fonctions :
- Fonctions agrégées (CREATE AGGREGATE)
- Fonctions analytiques (CREATE ANALITIC FUNCTION)
- Fonctions de filtrage des charges (CREATE FUNCTION)
- Fonctions d’analyse des charges (CREATE PARSER)
- Fonctions de source de charges (CREATE SOURCE)
- Fonctions de transformation (CREATE TRANSFORM FUNCTION)
- Fonctions scalaires (CREATE FUNCTION)
- Fonctions SQL (CREATE FUNCTION)
Il existe des instructions entre parenthèses qui aident à créer des fonctions.
Toutes les fonctions sauf les fonctions SQL ont une implémentation externe, c’est-à-dire qu’elles se réfèrent à une bibliothèque dynamique externe.
Les fonctions SQL sont stockées dans une base de données mais ne peuvent utiliser que des requêtes simples.
Il existe une instruction pour supprimer des fonctions pour chaque type de fonction, sauf les fonctions analytiques.
DROP AGGREGATE FUNCTION nom(types_d_arguments)
DROP FILTER nom()
DROP SOURCE nom()
DROP PARSER nom()
DROP TRANSFORM FUNCTION nom(types_d_arguments)
DROP FUNCTION nom(types_d_arguments)
où :
- types_d_arguments – types d’arguments séparés par une virgule.
Une fonction peut être supprimée par une instruction DROP FUNCTION, sauf pour les fonctions agrégées et de transformation. Les fonctions peuvent être surchargées, donc pour les supprimer il est nécessaire de spécifier les types d’arguments. Ils sont nécessaires même si la fonction n’a pas de surcharge.
SAP HANA
Les instructions suivantes sont utilisées pour supprimer des procédures et des fonctions dans SAP HANA :
DROP PROCEDURE nom_de_procédure
DROP FUNCTION nom_de_fonction
La surcharge de fonctions et de procédures n’est pas supportée ; par conséquent, seul le nom est spécifié lors de la suppression.
Apache Impala
Impala permet de créer une fonction (scalaire et agrégée) avec une implémentation externe. Les fonctions scalaires peuvent être implémentées en C++ et Java. Les agrégées ne le peuvent qu’en C++. L’instruction suivante est utilisée pour supprimer les fonctions agrégées :
DROP AGGREGATE FUNCTION nom_de_fonction(types_d_arguments)
où :
- types_d_arguments – types d’arguments séparés par une virgule.
L’instruction pour supprimer une fonction scalaire dépend de l’implémentation du langage.
L’instruction suivante est utilisée pour supprimer une fonction scalaire en C++ :
DROP FUNCTION nom_de_fonction_scalaire(types_d_arguments)
L’instruction suivante est utilisée pour supprimer une fonction scalaire en Java :
DROP FUNCTION nom_de_fonction_scalaire
Impala permet la surcharge des fonctions ; par conséquent, il est nécessaire de spécifier les types d’arguments lors de la suppression. Les fonctions Java sont surchargées par Java lui-même, pour cette raison, les arguments ne doivent pas être spécifiés.
HPL/SQL offre de plus grandes opportunités pour l’utilisation des procédures et des fonctions.
Apache Hive
Hive permet de créer des fonctions avec une implémentation externe en Java. Les fonctions peuvent être temporaires ou permanentes. Les fonctions temporaires existent uniquement dans la session actuelle.
L’instruction suivante est utilisée pour supprimer les fonctions permanentes :
DROP FUNCTION nom_de_fonction
L’instruction suivante est utilisée pour supprimer les fonctions temporaires :
DROP TEMPORARY FUNCTION nom_de_fonction
Hive permet de créer des macros temporaires qui peuvent contenir des expressions simples. L’instruction suivante est utilisée pour supprimer les macros :
DROP TEMPORARY MACRO nom_de_macro
HPL/SQL offre de plus grandes opportunités pour l’utilisation des procédures et des fonctions.
Documentation de différents SGBD :