配列を関数のテーブルに挿入するにはどうすればよいですか?関数内のPLPGSQL配列
CREATE TABLE places
(
id SERIAL PRIMARY KEY
,location VARCHAR(100) NOT NULL
,timestamp TIMESTAMP
,person_id INTEGER NOT NULL REFERENCES people ON UPDATE...
);
CREATE TABLE people
(
id SERIAL PRIMARY KEY
,name VARCHAR(100) NOT NULL
);
私はどうなる機能をやろうとしています:
SELECT function(location_name, now(), '{1,2,3}');
これは、同じ場所とタイムスタンプと、アレイ内の各PERSON_IDのための場所のテーブルに3つのレコードを挿入します。主な問題は、関数が処理することができる必要がありますので、配列の長さは、ダイナミックにできることである:配列からIDをINSERTは、動的な作りと抽出に開始する場所を
SELECT function(location_name, now(), '{3,5,7,8,10}');
私は知りません。 UnestはDECLAREのINSERT INTO変数に使用できますが、動的なアスペクトは実行できません。私はこれを明確にしたいと思う。
答えていただきありがとうございます。私は代わりにLOOP配列を使用していますか? LOOPに副作用はありますか? – Neeran
plpgsql関数または 'DO'ステートメント内で、yesを指定します。いいえ、どのような副作用が起こる可能性があります。新しい[FOREACH'ループ](http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html#PLPGSQL-Foreach-ARRAY)に興味があるかもしれません。 –