我试图循环一个整数数组(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作为参数传递给函数。我得到这个错误:
06001
如何正确循环数组?
DECLARE a integer[] := array[1,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
或尝试new FOREACH
in PostgreSQL 9.1:
FOREACH i IN ARRAY a LOOP RAISE NOTICE '%',i; END LOOP;
然而,generate_series()
或unnest()
的基于集合的解决方案通常比大套件的循环更快。
基本例子:
> PostgreSQL: Frequency Table Expansion
> Select each month between a start and end date