Suppression de fonctions avec des caractères génériques
Dans PostgreSQL, il est possible de supprimer toutes les fonctions portant un nom donné quel que soit le nombre ou le type de paramètres qu'elles avoir. Cela peut être utile lors de la gestion d'un grand nombre de fonctions.
Requête de base
La requête suivante crée toutes les instructions DDL nécessaires pour supprimer toutes les fonctions portant un nom spécifique :
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' AND pg_function_is_visible(oid);
Cette requête génère des instructions 'DROP FUNCTION' pour chaque surcharge de la fonction 'my_function_name', garantissant que toutes les versions du fonction sont supprimées. La fonction 'pg_function_is_visible()' garantit que seules les fonctions du chemin de recherche actuel sont sélectionnées.
Fonction
Vous pouvez également utiliser une fonction PL/pgSQL pour automatiser le processus de suppression de fonctions avec des caractères génériques :
CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int) LANGUAGE plpgsql AS $$ DECLARE _sql text; BEGIN SELECT count(*)::int , 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ') FROM 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 $$;
Cette fonction prend un nom de fonction comme argument et renvoie le nombre de fonctions supprimées. Il peut être appelé comme suit :
SELECT f_delfunc('my_function_name');
Notes
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!