我可以按如下方式成功创建一个函数:
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;
答案 0 :(得分:53)
在Postgres函数can be overloaded中,所以必须使用参数来区分重载函数。要明确地识别函数,您只能放置其参数类型。
DROP FUNCTION IF EXISTS Foo(INT);
答案 1 :(得分:6)