VARIADIC参数必须是最后一个输入参数

时间:2013-10-09 14:42:10

标签: sql postgresql stored-procedures plpgsql

如何创建两个VARIADIC参数。看看我的代码并纠正我。

CREATE OR REPLACE FUNCTION ip_source_test(text,text,date,date,VARIADIC int[],VARIADIC text[])
RETURNS TABLE (no_documents int, "Report By" text, "Report_By" text) AS 
$$
BEGIN
IF 'Source Member' = $1 THEN
RETURN QUERY SELECT.....
ELSEIF 'company' = $1 THEN
RETURN QUERY SELECT.....
ELSE
RAISE NOTICE 'Not Worked';
END IF;
RETURN;
END;
$$ LANGUAGE plpgsql;

Error: VARIADIC parameter must be the last input parameter.

在SQL代码中我应该使用6个参数。请用示例代码更新我。

2 个答案:

答案 0 :(得分:1)

每个函数只能有一个VARIADIC,因为variadic包含 all 调用者传递的其他参数。

如果你的意思是调用者使用数组,那么使用variadic毫无意义,函数签名可能如下所示:

CREATE FUNCTION ip_source_test(text,text,date,date,int[], text[])

答案 1 :(得分:1)

正如错误消息告诉您:

  

VARIADIC参数必须是最后一个输入参数。

从逻辑上讲,函数只能将VARIADIC参数作为最后一个参数。在之前可以有其他(非VARIADIC)参数Quoting the manual here:

  

有效地,VARIADIC处或之外的所有实际论点   位置被收集到一维数组