Dans Postgres, la gestion des fonctions stockées dans un fichier texte peut être difficile lors de l'ajout ou de la suppression de paramètres à des fonctions existantes. Pour résoudre ce problème, il existe une méthode générique pour supprimer toutes les fonctions portant un nom spécifique, quel que soit le nombre ou le type de paramètres.
Exécutez la requête suivante pour générer des instructions DDL pour supprimer toutes les fonctions avec un nom spécifique :
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' AND pg_function_is_visible(oid);
Remplacez 'my_function_name' par le nom réel de votre fonction (sensible à la casse et sans guillemets doubles). Cette requête renvoie une liste d'instructions DROP FUNCTION avec les types de paramètres corrects pour toutes les surcharges de la fonction.
Pour une exécution immédiate des instructions drop, pensez à créer 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$;
Pour supprimer toutes les fonctions nommées 'my_function_name' :
SELECT f_delfunc('my_function_name');
La fonction renverra le nombre de fonctions supprimées.
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!