Kể từ PostgreSQL 9.1 có FOREACH
tiện lợi :
DO
$do$
DECLARE
m varchar[];
arr varchar[] := array[['key1','val1'],['key2','val2']];
BEGIN
FOREACH m SLICE 1 IN ARRAY arr
LOOP
RAISE NOTICE 'another_func(%,%)',m[1], m[2];
END LOOP;
END
$do$
Giải pháp cho phiên bản cũ hơn :
DO
$do$
DECLARE
arr varchar[] := '{{key1,val1},{key2,val2}}';
BEGIN
FOR i IN array_lower(arr, 1) .. array_upper(arr, 1)
LOOP
RAISE NOTICE 'another_func(%,%)',arr[i][1], arr[i][2];
END LOOP;
END
$do$
Ngoài ra, không có sự khác biệt giữa varchar[]
và varchar[][]
cho hệ thống kiểu PostgreSQL. Tôi giải thích chi tiết hơn ở đây.
DO
câu lệnh yêu cầu ít nhất PostgreSQL 9.0 và LANGUAGE plpgsql
là mặc định (vì vậy bạn có thể bỏ qua phần khai báo).