Вставить в таблицу PostgreSql из массива пользовательского типа - PullRequest
0 голосов
/ 18 сентября 2018

Я создаю пользовательский тип, например, так:

CREATE TYPE employee AS (employee_id INTEGER, name VARCHAR(200), age INTEGER);

Затем я создаю функцию, которая получает массив этого типа в качестве параметра:

CREATE FUNCTION insert_office(v_office_id INTEGER, v_office_name VARCHAR(400), v_employees employee[])
RETURNS void
AS $BODY$

INSERT INTO office (office_id, office_name)
VALUES(v_office_id, v_office_name)

--here I need to insert the array of employees (v_employees) into the employees table

$BODY$
LANGUAGE SQL;

Учитывая, что таблица сотрудниковнастроен так, чтобы соответствовать свойствам типа сотрудника:

CREATE TABLE employee (employee_id INTEGER, name VARCHAR(200), age INTEGER)

Как я могу просто перенести этот массив типа сотрудника в таблицу сотрудников?Несмотря на несколько попыток, я не могу понять синтаксис правильно.(PostgreSql 9,6)

1 Ответ

0 голосов
/ 18 сентября 2018

Вам нужно отложить элементы массива:

insert into employees (employee_id, name, age)
select employee_id, name, age
from unnest(v_employees);
...