有没有一种方法可以创建可以用可变数量的参数(逗号分隔,因此位置)调用的函数。 例如,用function1(param1,param2)调用这样的函数,并可能用function1(,param2)或function1(param1,)调用它? 我用默认参数创建了一个函数,但是调用它时出错:
select * from iDxi('3 days',) order by "Date" asc
ERROR: syntax error at or near ")"
LINE 1: select * from iDxi('3 days',) order by "Date" asc
我的函数定义如下:
CREATE OR REPLACE FUNCTION public.idxi(
mydated text DEFAULT '99 year'::text,
mydatef text DEFAULT '-99 year'::text)
RETURNS TABLE...
当不提供参数select * from idxi()
时有效,而仅提供一个...时无效。
我在哪里错了?
答案 0 :(得分:0)
如果只想传递第二个参数,请按名称传递:
select *
from idxi(mydatef => '-3 days');
如果您只想传递第一个参数,则只需按位置传递(在参数后没有,
即可)
select *
from idxi('3 days');
或者也按名称:
select *
from idxi(mydated => '3 days');
无关,但是:
如果要向函数传递间隔,则应声明该类型的参数:
CREATE OR REPLACE FUNCTION public.idxi(
mydated interval DEFAULT '99 year'::interval,
mydatef interval DEFAULT '-99 year'::interval)
RETURNS TABLE...