使用默认值进行Postgres函数重载 - 我的函数是不可调用的吗?

时间:2018-04-06 12:47:58

标签: sql postgresql overloading

假设我创建了两个函数:

create function test() returns int
as 
$$ 
    select 1::int
$$
language sql;



create function test(int default 5) returns int
as 
$$ 
    select $1
$$
language sql;

如果我这样做:

select * from test();

我收到错误消息function test() is not unique。有没有办法调用上面的第一个函数?同样,如何使用默认值调用上面的第二个函数?

1 个答案:

答案 0 :(得分:2)

不 - 没有方法可以记录:

https://www.postgresql.org/docs/current/static/typeconv-func.html

  

考虑具有参数默认值的函数   匹配任何省略零或多个默认参数的调用   位置。 如果多个此类函数与一个调用匹配,则为一个   使用最早出现在搜索路径中。 如果有两个或者   具有相同参数类型的相同模式中的更多此类函数   在非违约的位置(如果有的话,这是可能的)   不同的默认参数集),系统将无法实现   确定哪个更喜欢,以及“模糊函数调用”   如果找不到与呼叫更好的匹配,将导致错误。

强调我的。