A basic script to loop over an array in psql-
CREATE OR REPLACE FUNCTION func1(n character varying, v character varying)
RETURNS integer AS
$BODY$
DECLARE
return_code integer;
BEGIN
RAISE NOTICE '(%,%)', n, v;
return_code := 1;
RETURN return_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN -1;
END;
$BODY$
LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION func2()
RETURNS integer AS
$BODY$
DECLARE
return_code integer;
pairs varchar[][] := array[['key2','val2'],
['key1','val2']];
BEGIN
FOR i IN array_lower(pairs, 1) .. array_upper(pairs, 1)
LOOP
--RAISE NOTICE '%,%',pairs[i][1]::varchar, pairs[i][2]::varchar;
PERFORM func1(pairs[i][1]::varchar, pairs[i][2]::varchar);
END LOOP;
return 1;
END;
$BODY$
LANGUAGE plpgsql;
SELECT * from func2();