PostgresQL: цикл по целому [] и вставка текущего элемента в другую таблицу - PullRequest
0 голосов
/ 16 марта 2011

У меня есть функция, которая принимает параметр с именем p_categories, типа smallint[].

Как просмотреть p_categories и выполнить следующую команду, где cat - текущий smallint in p_categories?

INSERT INTO mytable (i_category) VALUES (cat)

Что-то вроде этого ( псевдокод ), может быть?

FOR cat in SELECT p_categories
    INSERT INTO mytable (i_category) VALUES (cat)
END LOOP;

Это дает мне ошибку: "неверный синтаксис ввода дляцелое число: "{14,20}", когда p_categories равно '{14,20}'.

1 Ответ

2 голосов
/ 16 марта 2011

Я думаю, что вы ищете unnest

INSERT INTO mytable (i_category)
SELECT unnest(p_categories);

Функция массива unnest просто расширяет массив на его элементы.

Или более конкретный пример:

> create table t (i int not null);
> insert into t (i) select unnest(array[1,2]);
> select * from t;
 i 
---
 1
 2
(2 rows)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...