我有一个 PostgreSQL 函数:
CREATE OR REPLACE FUNCTION test()
RETURNS some_table
LANGUAGE sql STABLE STRICT SECURITY DEFINER
AS $function$
SELECT * FROM some_table ;
$function$;
它运行良好,并按some_table
预期返回记录。但是,如果我编写完全相同的查询,除了添加一个可选参数:
CREATE OR REPLACE FUNCTION test(arg VARCHAR DEFAULT NULL)
该函数返回单个结果:
null | null | null | null | null | null
有人能解释一下为什么吗?据我了解,未使用的参数(尤其是带有 的参数DEFAULT
)甚至不应该对函数或其查询产生任何影响。