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$;
Hoặc đơn giản hơn với FOREACH
trong PostgreSQL 9.1 trở lên:
FOREACH i IN ARRAY a
LOOP
RAISE NOTICE '%', i;
END LOOP;
Đối với mảng nhiều chiều, hãy xem:
- Lặp lại thứ nguyên mảng trong plpgsql
Tuy nhiên, các giải pháp dựa trên bộ với generate_series()
hoặc unnest()
thường nhanh hơn lặp qua các tập hợp lớn. Các ví dụ cơ bản:
- PostgreSQL:Mở rộng Bảng Tần suất
- Chọn mỗi tháng giữa ngày bắt đầu và ngày kết thúc
Tìm kiếm các thẻ tạo chuỗi hoặc không phù hợp để biết thêm.