本文已参与「新人创作礼」活动,一起开启掘金创作之路
在PostgreSQL中,我们想要删除函数的时候必须得加上函数的参数。
例如下面的函数:
bill=# DROP FUNCTION f_add(c1 integer, c2 integer);
DROP FUNCTION
bill=# create function f_add(c1 int,c2 int) returns int
as $$
declare
v_total int;
begin
v_total = c1 + c2;
return v_total;
end;
$$ language plpgsql;
CREATE FUNCTION
我只指定函数名去删除是不行的:
bill=# drop function f_add();
ERROR: function f_add() does not exist
必须得带上参数才可以删掉:
bill=# DROP FUNCTION f_add(c1 integer, c2 integer);
DROP FUNCTION
我们可以通过下面的脚本来获取批量删除函数的语句:
SELECT FORMAT('DROP FUNCTION %s(%s);'
,p.oid::regproc
,pg_get_function_identity_arguments(p.oid))
FROM pg_proc AS p
INNER JOIN pg_namespace AS n
ON p.pronamespace = n.oid
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema');