У меня есть таблица Postgres, имеющая следующую форму
CREATE TABLE "public"."days"
(
"id" integer NOT NULL,
"day" character varying(9) NOT NULL,
"visits" bigint[] NOT NULL,
"passes" bigint[] NOT NULL
);
Я хотел бы написать функцию, которая позволяет мне возвращать столбец visits
или passees
в качестве результата для указано id
. Моя первая попытка выглядит следующим образом:
CREATE OR REPLACE FUNCTION day_entries(INT,TEXT) RETURNS BIGINT[] LANGUAGE sql AS
'SELECT $2 FROM days WHERE id = $1;'
, которая завершается неудачно с ошибкой вдоль строк
несоответствие возвращаемого типа в функции, объявленной для возврата bigint [] ДЕТАЛИ: Фактический возвращаемый тип текст.
Если я поставлю visits
вместо $2
, все будет работать так, как ожидалось. Не имеет смысла определять несколько функций для соответствия различным столбцам из таблицы days
. Есть ли способ передать фактическое имя столбца в качестве параметра, сохраняя при этом Postgres довольным?