/ / PostgreSQL: Wie kann ich die Funktion löschen, wenn keine Parameter angegeben werden? - mysql, postgresql, plpgsql

PostgreSQL: Wie man Funktion FUNKTION IF EXISTS ohne Angabe von Parametern fallen lassen? - mysql, postgresql, plpgsql

Ich kann eine Funktion erfolgreich wie folgt erstellen:

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

Wenn ich jedoch zuerst prüfen möchte, ob die Funktion vorhanden ist, und sie dann ablegen möchte, muss ich Folgendes angeben:

DROP FUNCTION IF EXISTS Foo(My_Value INT);

Ohne Angabe der Eingabeparameter wird Folgendes ausgegeben: "HINWEIS: Funktion foo () ist nicht vorhanden.

DROP FUNCTION IF EXISTS Foo();

Ähnlich wie bei MySQL gibt es eine Möglichkeit, aFUNKTION in PostgreSQL, ohne die Parameter für die Funktion angeben zu müssen? Gibt es mit anderen Worten ein Äquivalent für Folgendes in der MySQL-Anweisung (d. H. Die gespeicherte Prozedur löschen, ohne die Eingabeparameter anzugeben)?

DROP PROCEDURE IF EXISTS Foo;

Antworten:

42 für die Antwort № 1

In Postgres Funktionen kann überlastet werden, daher sind Parameter erforderlich, um überladene Funktionen zu unterscheiden. Um eine Funktion eindeutig zu identifizieren, können Sie nur Typen ihrer Parameter angeben.

DROP FUNCTION IF EXISTS Foo(INT);

3 für die Antwort № 2

Ab Postgres 10 können Sie Funktionen nur nach Namen ablegen, solange die Namen für ihr Schema eindeutig sind.

Beispiel:

drop function if exists Foo;

Dokumentation Hier.