Postgresql 如何在POSTGRES中排列SELECT查询中的值

Postgresql 如何在POSTGRES中排列SELECT查询中的值,postgresql,postgresql-9.6,Postgresql,Postgresql 9.6,我试图在我的postgres调用中构造一个数组,方法是从一个表中提取所有SMALLINT的3个值,并将它们转换为一个数组,这样我就可以在调用的其余部分中使用它们,如so code_list[0] 目前,我只创建了函数的这一部分,以便在继续之前确保正确构建它。然而,我收到了这个错误:子查询必须只返回一列,这使我觉得它假定我正在尝试返回一个表。据我所知,我无法将表保存到一个值中,因此我尝试创建一个数组 我是否正确创建了一个数组?如果这是一个更好的策略,有没有办法将其转换为JSONB CREATE O

我试图在我的postgres调用中构造一个数组,方法是从一个表中提取所有SMALLINT的3个值,并将它们转换为一个数组,这样我就可以在调用的其余部分中使用它们,如so code_list[0]

目前,我只创建了函数的这一部分,以便在继续之前确保正确构建它。然而,我收到了这个错误:子查询必须只返回一列,这使我觉得它假定我正在尝试返回一个表。据我所知,我无法将表保存到一个值中,因此我尝试创建一个数组

我是否正确创建了一个数组?如果这是一个更好的策略,有没有办法将其转换为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;