我试图通过从表中提取3个值(所有SMALLINT值)并将它们转换为数组,从而在postgres调用中构造一个数组,以便可以在其余的调用中使用它们,例如code_list[0]
当前,我只创建了函数的这一部分,以便可以确保在继续进行之前正确地构造它。但是,我收到此错误error: subquery must return only one column
,这使我觉得它假定我正在尝试返回TABLE。据我所知,我无法将一个表保存为一个值,因此我正在尝试创建一个数组。
我可以正确创建阵列吗?如果那是更好的策略,是否有办法将其转换为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;
答案 0 :(得分:2)
使用数组构造函数:
DECLARE res integer[];
BEGIN
SELECT ARRAY[c.big, c.mid, c.small] INTO res
FROM ...
RETURN res;
END;