数组 – 在PL/pgSQL中迭代整数[]

前端之家收集整理的这篇文章主要介绍了数组 – 在PL/pgSQL中迭代整数[]前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图循环一个整数数组(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

搜索标签generate-seriesunnest了解更多。

猜你在找的Postgre SQL相关文章