Със съвременния PostgreSQL можете да опростите такава функция.
Тестова настройка:
CREATE TABLE tbl1 (id int, value text);
В този случай няма нужда изрично да се създава тип (ако типът е базиран на ред от таблица), той се създава имплицитно за всяка таблица.
Функция:
CREATE FUNCTION f_insert_rows_into_tbl1(tbl1[])
RETURNS VOID AS
$BODY$
INSERT INTO tbl1 (id,value)
SELECT (a).*
FROM (SELECT unnest($1) AS a) x;
$BODY$ LANGUAGE sql;
Обаждане:
SELECT f_insert_rows_into_tbl1('{"(1,foo)","(2,bar)"}');
Обърнете внимание на входния синтаксис за масив от редове!