web-dev-qa-db-ja.com

PostgreSQL:パラメータを指定せずに機能が存在する場合にドロップする方法は?

次のように関数を正常に作成できます。

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

ただし、最初に関数が存在するかどうかを確認し、存在する場合は削除する場合は、次を指定する必要があります。

DROP FUNCTION IF EXISTS Foo(My_Value INT);

入力パラメータを指定しないと、次のメッセージが表示されます。「注意:関数foo()は存在しません。スキップします」

DROP FUNCTION IF EXISTS Foo();

MySQLと同様に、関数にパラメーターを指定せずにPostgreSQLで関数を削除する方法はありますか?言い換えると、MySQLステートメントには次のものに相当するものがありますか(つまり、入力パラメーターを指定せずにストアドプロシージャを削除します)?

DROP PROCEDURE IF EXISTS Foo;
23
Joseph Idziorek

Postgres関数では オーバーロード可能 であるため、オーバーロードされた関数を区別するにはパラメーターが必要です。関数を明確に識別するために、パラメータのタイプのみを配置できます。

DROP FUNCTION IF EXISTS Foo(INT);
53
klin

Postgres 10では、名前がスキーマに固有である限り、名前のみで関数を削除できます。

例:

drop function if exists Foo;

ドキュメント ここ

6
Mark McKelvy