将返回的SETOF转换为PL / PgSQL中的一个数组(具体)

时间:2017-08-15 10:29:51

标签: postgresql plpgsql array-agg

我知道有SELECT array_agg(f) FROM (SELECT blah FROM stuff) f的过程,这在SQL中很棒,但是在PL / pgSQL中编写函数时,是否有简写方法?

我试图将JSON密钥放入一个可用于查看长度的数组中。 有点像...

v_len := array_length( array_agg(json_object_keys(myjson)), 1);

而不是长,DECLARE变量,做一个SELECT array_agg(f) INTO ...,我一直在做。我似乎有数百个使用相同SQL字符串的实现,但我真的想减少我的代码,我的手指从所有冗余打字中麻木。

我用这种简写方法遗漏了什么?

1 个答案:

答案 0 :(得分:3)

您可以使用ARRAY(subselect)构造函数

DO $$
DECLARE a int[];
BEGIN
  a := ARRAY(SELECT * FROM generate_series(1,10));
  RAISE NOTICE 'result: %', a;
END;
$$;