The 你有的功能应该是:
CREATE FUNCTION insertdata(varchar(10),varchar(40))
RETURNS VOID AS
$$
INSERT INTO mahasiswa(col_name1, col_name2)
VALUES ($1,$2);
$$
LANGUAGE sql STRICT;
To 插入多行,您可以使用复合类型的数组或两个数组相同数量的元素并行解除嵌套。演示后者:
CREATE FUNCTION insertdata(_arr1 text[], _arr2 text[])
RETURNS VOID AS
$$
INSERT INTO mahasiswa(col_name1, col_name2)
SELECT unnest(_arr1), unnest(_arr2);
$$
LANGUAGE sql STRICT;
Call:
SELECT insertdata ('{1234567890,0987654321}', '{Nahrun,Hartono}');
我宁愿使用 plpgsql 函数并检查两个数组中的元素数量是否相同,以防止错误。使用array_length(arr1, 1)
...
Postgres 9.4 或更高版本...
...引入了 unnest 的新变体,它并行接受多个数组 - 没有上述黑客的怪癖(从不默认为CROSS JOIN
)
INSERT INTO mahasiswa(col_name1, col_name2)
SELECT * FROM unnest(_arr1, _arr2); -- must be in FROM list