我创建了一个函数,如下所示:
CREATE FUNCTION my_func(value INTEGER) RETURNS VOID AS $$
BEGIN
END;
$$ LANGUAGE plpgsql;
但是我需要指定参数来删除该函数,如下所示:
DROP FUNCTION my_func(value INTEGER);
因为如果不指定参数如下图:
DROP FUNCTION my_func;
然后,我收到以下错误:
错误:函数名称“my_func”不唯一
提示:指定参数列表以明确选择函数。
那么,我可以删除一个不带参数的函数吗?
在Postgres函数中可以重载,因此需要参数来区分重载函数。要明确标识一个函数,您可以仅输入其参数的类型。
DROP FUNCTION my_func(INT);
如果有多个同名函数,则需要用
()
指定零个或多个参数。 *文档解释了函数重载。
例如,您创建 2 个函数,如下所示:
CREATE FUNCTION my_func() RETURNS VOID AS $$
BEGIN
END;
$$ LANGUAGE plpgsql;
CREATE FUNCTION my_func(value INTEGER) RETURNS VOID AS $$
BEGIN
END;
$$ LANGUAGE plpgsql;
然后,您可以使用下面的 SQL 删除第一个函数:
DROP FUNCTION my_func();
或者,您可以使用下面的 SQL 删除第二个函数:
DROP FUNCTION my_func(INTEGER);
并且,您创建了 2 个过程,如下所示:
CREATE PROCEDURE my_proc() LANGUAGE plpgsql AS $$
BEGIN
END;
$$;
CREATE PROCEDURE my_proc(value INTEGER) LANGUAGE plpgsql AS $$
BEGIN
END;
$$;
然后,您可以使用以下 SQL 删除第一个过程:
DROP PROCEDURE my_proc();
或者,您可以使用下面的 SQL 删除第二个过程:
DROP PROCEDURE my_proc(INTEGER);