あなたが持っている機能 むしろ:
CREATE FUNCTION insertdata(varchar(10),varchar(40))
RETURNS VOID AS
$$
INSERT INTO mahasiswa(col_name1, col_name2)
VALUES ($1,$2);
$$
LANGUAGE sql STRICT;
-
言語名を引用しないでください。識別子です。
-
永続化されたステートメントを含むターゲットリストを常に提供します。そうしないと、後でテーブル定義を変更すると、関数が予期しない動作をする可能性があります。
-
char(n)
は絶対に使用しないでください 、あなたが何をしているのかわからない限り。text
を使用します 。
複数の行を挿入する 、複合型の配列または同じ数の要素を持つ2つの配列を取ることができます 並行して解き放つ。後者のデモンストレーション:
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;
電話:
SELECT insertdata ('{1234567890,0987654321}', '{Nahrun,Hartono}');
間違いを防ぐために、plpgsql関数を使用して、両方の配列で要素の数が同じであることを確認したいと思います。 array_length(arr1, 1)
を使用します ...
Postgres9.4以降...
...複数の配列を並列に受け入れるunnestの新しいバリアントを導入しました-上記のハックの癖なしで(デフォルトでCROSS JOIN
になることはありません) )
INSERT INTO mahasiswa(col_name1, col_name2)
SELECT * FROM unnest(_arr1, _arr2); -- must be in FROM list