Как получить значения из запроса SELECT в POSTGRES - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь структурировать массив в своем вызове postgres, извлекая из таблицы 3 значения (все SMALLINT) и превращая их в массив, чтобы я мог использовать их в оставшейся части вызова, например 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;

1 Ответ

0 голосов
/ 25 сентября 2018

Использовать конструктор массива:

DECLARE res integer[];
BEGIN
   SELECT ARRAY[c.big, c.mid, c.small] INTO res
   FROM ...
   RETURN res;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...