Với PostgreSQL ngày nay, bạn có thể đơn giản hóa một chức năng như vậy.
Thiết lập thử nghiệm:
CREATE TABLE tbl1 (id int, value text);
Không cần tạo kiểu rõ ràng trong trường hợp này (nếu kiểu dựa trên một hàng của bảng), nó được tạo ngầm định cho mọi bảng.
Chức năng:
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;
Gọi:
SELECT f_insert_rows_into_tbl1('{"(1,foo)","(2,bar)"}');
Lưu ý cú pháp đầu vào cho một mảng hàng!