PostgresQL:遍历整数[]并将当前元素插入另一个表

时间:2011-03-16 01:44:57

标签: sql postgresql loops

我有一个函数,它接受一个名为p_categories的参数,类型为smallint[]

如何查看p_categories并执行以下命令,其中catsmallint中的当前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 个答案:

答案 0 :(得分:2)

我认为你正在寻找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)