web-dev-qa-db-fra.com

PostgreSQL: Comment supprimer la fonction si elle existe sans spécifier de paramètres?

Je peux créer avec succès une fonction comme suit:

CREATE FUNCTION Foo(MY_Value INT) RETURNS INT
AS 'SELECT 2 + MY_Value'
LANGUAGE SQL

Cependant, si je veux d'abord vérifier si la fonction existe puis la supprimer si je le fais, je dois spécifier ce qui suit:

DROP FUNCTION IF EXISTS Foo(My_Value INT);

Sans spécifier les paramètres d'entrée, ce qui suit renvoie une erreur indiquant "AVIS: la fonction foo () n'existe pas, en sautant"

DROP FUNCTION IF EXISTS Foo();

Semblable à MySQL, existe-t-il un moyen de supprimer une FONCTION dans PostgreSQL sans avoir à spécifier les paramètres de la fonction? En d'autres termes, existe-t-il un équivalent pour les éléments suivants dans l'instruction MySQL (c'est-à-dire, supprimer la procédure stockée sans spécifier les paramètres d'entrée)?

DROP PROCEDURE IF EXISTS Foo;
23
Joseph Idziorek

Dans les fonctions Postgres peut être surchargé , donc les paramètres sont nécessaires pour distinguer les fonctions surchargées. Pour identifier sans ambiguïté une fonction, vous ne pouvez mettre que des types de ses paramètres.

DROP FUNCTION IF EXISTS Foo(INT);
53
klin

À partir de Postgres 10, vous pouvez supprimer des fonctions uniquement par nom, tant que les noms sont uniques à leur schéma.

Exemple:

drop function if exists Foo;

Documentation ici .

6
Mark McKelvy