PostgreSQL 的VARIDIC 学习

开始

VARIDIC,可以使用变参。例子:

复制代码
postgres=# CREATE or replace FUNCTION gao_concat(VARIADIC param_args text[]) RETURNS text AS
$$
  SELECT array_to_string($1,'*');
$$
LANGUAGE SQL;
CREATE FUNCTION
postgres=# 
postgres=# SELECT gao_concat('My', 'dog', 'likes', 'chocolate') As result;
         result         
------------------------
 My*dog*likes*chocolate
(1 row)

postgres=# 
复制代码

再看PostgreSQL 的官方例子:

复制代码
CREATE FUNCTION mleast(VARIADIC numeric[]) RETURNS numeric AS $$
    SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i);
$$ LANGUAGE SQL;

SELECT mleast(10, -1, 5, 4.4);
 mleast 
--------
     -1
(1 row)
复制代码

变参数对数组是不适用的,需要把数组也声明为 variadic:

[作者:技术者高健@博客园  mail: luckyjackgao@gmail.com ]

复制代码
postgres=# select mleast(array[10.1,3,4,1.5,6.2]);
ERROR:  function mleast(numeric[]) does not exist
LINE 1: select mleast(array[10.1,3,4,1.5,6.2]);
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
postgres=# select mleast( variadic array[10.1,3,4,1.5,6.2]);
 mleast 
--------
    1.5
(1 row)

postgres=# 
复制代码

 

结束






本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/11/09/2762510.html,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值