PostgreSQL:如何在没有指定参数的情况下删除函数?

时间:2015-06-11 13:57:36

标签: mysql postgresql plpgsql

我可以按如下方式成功创建一个函数:

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中删除FUNCTION而不必为函数指定参数?换句话说,在MySQL语句中是否存在以下等价物(即,在不指定输入参数的情况下删除存储过程)?

DROP PROCEDURE IF EXISTS Foo;

2 个答案:

答案 0 :(得分:53)

在Postgres函数can be overloaded中,所以必须使用参数来区分重载函数。要明确地识别函数,您只能放置其参数类型。

DROP FUNCTION IF EXISTS Foo(INT);

答案 1 :(得分:6)

从Postgres 10开始,只要名称对于其模式是唯一的,您就可以按名称删除函数。

示例:

drop function if exists Foo;

文档here