Я прочитал несколько постов об использовании имен столбцов таблицы в функции PostgreSQL, но не смог заставить его работать на меня.
У меня есть эта простая функция
DROP FUNCTION IF EXISTS public.benchmark(CHARACTER VARYING, CHARACTER VARYING, BIGINT, BIGINT, BIGINT);
CREATE OR REPLACE FUNCTION benchmark(params CHARACTER VARYING, colName CHARACTER VARYING, idFrom BIGINT, idTo BIGINT, testNumber BIGINT) RETURNS SETOF RECORD AS $$
DECLARE
elemArray TEXT[] := ARRAY(SELECT colName FROM public.test WHERE test.id BETWEEN idFrom AND idTo);
selectedElem RECORD;
elem TEXT;
BEGIN
FOREACH elem IN ARRAY elemArray LOOP
raise notice 'elem Value: %', elem;
SELECT elem INTO selectedElem;
RETURN NEXT selectedElem;
END LOOP;
END;
$$ LANGUAGE plpgsql;
КогдаЯ выполняю это с
SELECT * FROM public.benchmark('ad','name',1,2,1) AS x(Item TEXT);
Я получаю
![enter image description here](https://i.stack.imgur.com/LZKSi.png)
, и я должен получить имя значения столбца между idFrom и idTo .Как я могу использовать переменную colName в качестве фактического имени столбца в elemArray TEXT[] := ARRAY(SELECT colName FROM public.test WHERE test.id BETWEEN idFrom AND idTo);