I have a function which takes a parameter named p_categories, of type smallint[].
How do I look through p_categories and execute the following command, where cat is the current smallint in p_categories?
INSERT INTO mytable (i_category) VALUES (cat)
Something like this (pseudocode) maybe?
FOR cat in SELECT p_categories
INSERT INTO mytable (i_category) VALUES (cat)
END LOOP;
That gives me an error: "invalid input syntax for integer: "{开发者_高级运维14,20}" when p_categories is '{14,20}'.
I think you're looking for unnest
INSERT INTO mytable (i_category)
SELECT unnest(p_categories);
The unnest array function just expands an array into its elements.
Or a more concrete example:
> create table t (i int not null);
> insert into t (i) select unnest(array[1,2]);
> select * from t;
i
---
1
2
(2 rows)
加载中,请稍侯......
精彩评论