Как использовать массив для вставки в таблицу в функции?PLPGSQL Array in Functions
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}');
Я не знаю, с чего начать в принятии ВСТАВИТЬ динамичны и извлечение идентификаторов из массива , Unest может использоваться для переменных INSERT INTO в DECLARE, но динамический аспект не может быть выполнен. Надеюсь, я сделал это ясно.
Спасибо за ваш ответ, могу ли я сделать, для i в массиве LOOP вместо этого? Есть ли побочные эффекты для LOOP? – Neeran
Внутри функции plpgsql или 'DO', да. Не знаю, какие побочные эффекты могут быть. Вас может заинтересовать новый цикл ['FOREACH'] (http://www.postgresql.org/docs/current/interactive/plpgsql-control-structures.html#PLPGSQL-FOREACHARARAR) –