Maison >base de données >tutoriel mysql >Puis-je supprimer toutes les fonctions correspondant à un nom générique dans PostgreSQL, quels que soient leurs paramètres ?
Puis-je supprimer des fonctions avec un caractère générique, quels que soient les paramètres ?
Introduction
Maintenance les fonctions stockées dans un fichier texte peuvent devenir fastidieuses, notamment lors de l'ajout ou de la suppression de paramètres. Taper manuellement l’ordre exact des paramètres pour chaque fonction peut être fastidieux. Cet article explore une solution pour supprimer toutes les fonctions portant un nom donné à l'aide d'un caractère générique, éliminant ainsi le besoin de spécifier des paramètres.
Requête de suppression de fonctions
Pour créer les éléments nécessaires Instructions DDL, exécutez la requête suivante :
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' -- Replace 'my_function_name' with the target function name AND pg_function_is_visible(oid); -- Restrict to the current search path
La requête produit des instructions DROP FUNCTION avec des types d'arguments, entre guillemets doubles et qualifié par le schéma. Cela garantit l'absence de vulnérabilité d'injection SQL et correspond au chemin de recherche actuel.
Fonction d'exécution des instructions Drop
Pour une exécution immédiate des instructions DROP, créez une fonction PL/pgSQL :
CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int) LANGUAGE plpgsql AS $func$ DECLARE _sql text; BEGIN SELECT count(*)::int, 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ') FROM pg_catalog.pg_proc WHERE proname = _name AND pg_function_is_visible(oid) INTO functions_dropped, _sql; IF functions_dropped > 0 THEN EXECUTE _sql; END IF; END $func$;
Appelez la fonction avec le nom de fonction souhaité pour supprimer les fonctions correspondantes et renvoyer le numéro droppé :
SELECT f_delfunc('my_function_name');
Considérations supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!