3

如何创建两个 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 个参数。请用示例代码更新我。

4

2 回答 2

1

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

如果您的意思是让调用者使用数组,那么无论如何使用可变参数是没有意义的,函数签名可能如下所示:

CREATE FUNCTION ip_source_test(text,text,date,date,int[], text[])
于 2013-10-09T15:32:20.677 回答
1

正如错误消息告诉您的那样:

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

从逻辑上讲,函数只能将单个VARIADIC参数作为最后一个参数在该参数之前可以有其他(非 VARIADIC)参数。在这里引用手册:

实际上,在该位置或超出该位置的所有实际参数VARIADIC 都被收集到一个一维数组中

于 2013-10-09T15:38:47.517 回答