Depuis PostgreSQL 9.1 il y a le pratique FOREACH
:
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$
Solution pour les anciennes versions :
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$
De plus, il n'y a pas de différence entre varchar[]
et varchar[][]
pour le système de type PostgreSQL. Je vous explique plus en détail ici.
Le DO
requiert au moins PostgreSQL 9.0 et LANGUAGE plpgsql
est la valeur par défaut (vous pouvez donc omettre la déclaration).