遍历整数[]用PL / pgSQL(Iterating over integer[] in PL/p

2019-06-23 17:44发布

我通过一个整数阵列(试图环路integer[]在一个PLPGSQL功能)。 事情是这样的:

declare
    a integer[] = array[1,2,3];
    i bigint;
begin
    for i in a
loop 
    raise notice "% ",i;
end loop;
return true;
end

在我的实际使用情况下的整数数组a作为参数传递给函数。 我得到这个错误:

 ERROR: syntax error at or near "$1" LINE 1: $1 

如何通过阵列正常循环?

Answer 1:

DECLARE
   a integer[] := array[1,2,3];
   i integer;                   -- int, not bigint!
BEGIN
FOR i IN 1 .. array_upper(a, 1)
LOOP
   RAISE NOTICE '%', a[i];      -- single quotes!
END LOOP;
RETURN TRUE;
END

或尝试新的FOREACH中的PostgreSQL 9.1

FOREACH i IN ARRAY a
LOOP 
   RAISE NOTICE '%', i;
END LOOP;

然而,基于集的解决方案generate_series()unnest()比循环的大套更快经常。

基本的例子:

  • PostgreSQL的:频率表扩张
  • 选择一个开始和结束日期之间每个月

搜索标签产生系列或UNNEST更多。



文章来源: Iterating over integer[] in PL/pgSQL