次のように関数を正常に作成できます。
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;
Postgres関数では オーバーロード可能 であるため、オーバーロードされた関数を区別するにはパラメーターが必要です。関数を明確に識別するために、パラメータのタイプのみを配置できます。
DROP FUNCTION IF EXISTS Foo(INT);