我有一个函数,它接受一个名为p_categories
的参数,类型为smallint[]
。
如何查看p_categories
并执行以下命令,其中cat
是smallint
中的当前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}'
时。
答案 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)