如何从 POSTGRES 中的 SELECT 查询中排列值

How to ARRAY values from a SELECT query in POSTGRES

我试图在我的 postgres 调用中构建一个数组,方法是从 table 中提取 3 个值(所有 SMALLINT)并将它们转换成一个数组,以便我可以在调用的其余部分中使用它们,例如所以 code_list[0].

目前,我只创建了函数的这一部分,以便我可以确保在继续之前正确地构建它。但是,我收到此错误 error: subquery must return only one column,这让我觉得它假设我正在尝试 return 一个 TABLE。据我所知,我无法将 table 保存到一个值中,因此我正在尝试创建一个数组。

我是否正确创建了 ARRAY?如果这是更好的策略,有没有办法将其转换为 JSONB?

CREATE OR REPLACE FUNCTION "RetrieveCodeValues" (
  "@code"        VARCHAR(50)
)
RETURNS SMALLINT[] AS
$func$
BEGIN      
  SELECT ARRAY (
    SELECT c."big", c."mid", c."small"
    FROM "codes" AS c
    WHERE "code" = "@code"
  ) AS code_list;
  RETURN code_list;
END;
$func$ LANGUAGE PLPGSQL;

使用数组构造函数:

DECLARE res integer[];
BEGIN
   SELECT ARRAY[c.big, c.mid, c.small] INTO res
   FROM ...
   RETURN res;
END;