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$;
Atau lebih sederhana dengan FOREACH
di PostgreSQL 9.1 atau lebih baru:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Untuk array multidimensi lihat:
- Mengulangi dimensi array di plpgsql
Namun, solusi berbasis set dengan generate_series()
atau unnest()
seringkali lebih cepat daripada mengulang set besar. Contoh dasar:
- PostgreSQL:Perluasan Tabel Frekuensi
- Pilih setiap bulan antara tanggal mulai dan akhir
Cari tag generate-series atau unnest untuk lebih banyak lagi.