0
如何在函數中使用數組插入到表中?函數中的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}');
這會插入3條記錄到的地方表陣列中的每個爲person_id,具有相同的位置和時間戳。主要的問題是,數組的長度可以是動態的,所以功能應該能夠處理:
SELECT function(location_name, now(), '{3,5,7,8,10}');
我不知道在哪裏可以從陣列使得插入動態和提取的ID開始。 Unest可以用於DECLARE中的INSERT INTO變量,但動態方面無法完成。我希望我明確這一點。
感謝您的回答,我可以做,我在陣列LOOP而不是? LOOP有任何副作用嗎? – Neeran 2012-03-09 09:28:03
在plpgsql函數或'DO'語句中,是的。不知道,可能會產生什麼副作用。您可能對新的['FOREACH'循環]感興趣(http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html#PLPGSQL-FOREACH- ARRAY) – 2012-03-09 09:51:43