DO
$do$
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;
END
$do$;
または、 FOREACH
を使用すると簡単になります PostgreSQL 9.1以降の場合:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
多次元配列については、以下を参照してください:
- plpgsqlの配列次元をループします
ただし、generate_series()
を使用したセットベースのソリューション またはunnest()
多くの場合、大きなセットをループするよりも高速です。基本的な例:
- PostgreSQL:度数分布表の拡張
- 開始日と終了日の間の毎月を選択します
タグgenerate-seriesまたはunnestで詳細を検索してください。