Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带默认值的Postgres函数重载-我的函数是否不可调用?_Sql_Postgresql_Overloading - Fatal编程技术网

Sql 带默认值的Postgres函数重载-我的函数是否不可调用?

Sql 带默认值的Postgres函数重载-我的函数是否不可调用?,sql,postgresql,overloading,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(); 我得到一个错误,说函数test()不是唯一的。有没有办法调用上面的第一

假设我创建了两个这样的函数:

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();

我得到一个错误,说
函数test()不是唯一的
。有没有办法调用上面的第一个函数?类似地,如何使用默认值调用上面的第二个函数?

否-没有方法,并且有文档记录:

具有参数默认值的函数被视为 匹配省略了0个或多个defaultable参数的任何调用 位置。如果有多个这样的函数与一个调用匹配,则 使用搜索路径中最早出现的如果有两个或多个 同一模式中具有相同参数类型的更多此类函数 在非默认位置(如果他们有 不同的默认参数集),系统将无法 确定要选择哪个,因此需要“不明确的函数调用” 如果找不到与调用更好的匹配项,将导致错误


我的

否-没有办法,而且有文件记录:

具有参数默认值的函数被视为 匹配省略了0个或多个defaultable参数的任何调用 位置。如果有多个这样的函数与一个调用匹配,则 使用搜索路径中最早出现的如果有两个或多个 同一模式中具有相同参数类型的更多此类函数 在非默认位置(如果他们有 不同的默认参数集),系统将无法 确定要选择哪个,因此需要“不明确的函数调用” 如果找不到与调用更好的匹配项,将导致错误


我的

我想在任何编程语言中都会遇到同样的问题。你希望使用哪一个函数?为什么,当两个函数都有相同的签名时?老实说,我在函数创建时预期postgres会出错…因为我没有得到一个,所以我认为我遗漏了一些东西,第一个函数在某种意义上仍然是“有效的”,我想在任何编程语言中都会遇到同样的问题。你希望使用哪一个函数?为什么,当两个函数都有相同的签名时?老实说,我在函数创建时预期postgres会出错……因为我没有得到一个,所以我认为我遗漏了一些东西,并且第一个函数在某种意义上仍然是“有效的”。