2015-11-19 57 views
6

在PostgreSQL 9.3.4发布说明它说:什么是VARIADIC声明在PostgreSQL中意味着什么?

Ensure that the planner sees equivalent VARIADIC and non-VARIADIC function calls as equivalent (Tom Lane) 

我搜索了PostgreSQL的手册,但没有找到它是什么的定义。

我发现它与函数参数模式(IN,OUT,VARIADIC)相关,但我不明白它是什么意思?我什么时候想要使用它?如果函数具有VARIADIC属性,它在性能方面意味着什么?

回答

4

变量函数是那些参数数量未定义的函数,它们存在于许多编程和查询语言中。

在PostgreSQL的情况下,你可以找到在http://www.postgresql.org/docs/9.1/static/xfunc-sql.html一个例子(35.4.5 SQL函数与参数的可变数字。):

有效,达到或超过一个可变 位置所有的实际参数被收集到一维数组中,就好像你有 写入

+0

数组可以是用户定义的类型吗?一些我用CREATE TYPE声明的类型? – Johnathan

+0

这并不回答我的问题......说我有类型A:名称文本, salary integer ...我想数组是A类型的意思。意味着A的每个单元格是一个(文本,整数)元组。 .... [(text,integer),(text,integer),....] ...可以用VARADIC参数完成吗? – Johnathan

+0

@Johnathan可变参数必须声明为'array'类型,这意味着如果可以在数组中使用用户定义的类型元素,则还可以具有该类型元素的可变参数。可变参数和简单数组参数之间的区别在于,对于前一种情况,您可以传递数组元素,就好像其元素是参数列表中的附加参数一样。即:昏迷分离值。 –

3

当你不确定参数的数量时,我们使用Variadic。

有关详细信息,请参阅VARIADIC FUNCTIONS IN POSTGRESQL

参见维基约Variadic functions

在计算机编程,一个可变参数函数是 不定元数的函数,即,其中一个接受可变数量的 参数。支持可变参数函数在 编程语言中差别很大。

+0

我可以使用VARIADIC吗?例如,我知道它将是2-5个整数参数...如果它超过5,那么它应该给我函数不存在的错误。 – Johnathan

+0

@Johnathan: - 我不是100%确定,如果我理解正确,但是你可以检查参数的数量,然后显示消息,如果计数超过期望的数字。 –