Динамически пройтись по столбцам таблицы в функции ... Как?

Добрый день. Подскажите плиз ...
Есть таблица classif со столбцами:
... , group1, group2, group3, ... , group48, ...

В функции делаю запрос и хочу пробежаться по курсору этой таблицы и , скажем, обработать значение полей с group1 по group20 особым образом. делаю:

OPEN curs FOR SELECT * FROM classif;
 loop
    fetch curs INTO tmprec;
    exit when NOT found;
 
    FOR I IN 1..20 loop
 
        -- проблема в строке ниже, я не могу динамически подставить 
        -- значение нужного мне поля в зависимости от i. 
        -- она синтаксически неверна
    	value := tmprec.GROUP{I};  
 
        ... 
        ...обработка
        ...
 
    end loop;
 
end loop;

Приходиться вручную указывать и обрабатывать каждое значение без цикла, что то типа:
value := tmprec.group1;
...
value := tmprec.group2;
...
value := tmprec.group2;
...
value := tmprec.group4;
...
и так для каждого столбца.
Подскажите как бы динамически это сделать в цикле в зависимости от I?
что то вроде
value := tmprec.group{I};
Что то в доках не нашел ничего по этому вопросу.
Заранее спасибо.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Сходная тема

Сходная тема обсуждалась уже здесь на форуме.
Потворюсь, что написал тогда:
Любая хранимая процедура (т.е. функция) хранится в скомпилированном виде. Процесс компиляции разумеется включает в себя все необходимые проверки синтаксисиов и типов. А теперь внимание вопрос:
Каким образом можно проверить соответствие типов, если на момент компиляции тип столбца в вашей таблице неизвестен? Опять же чтобы задействовать value в данном выше примере, для начало надо для него выполнить declare. На какой тип будете выполнять declare, если например group1 у вас integer, а group2 varchar? А PostgreSQL до тех пор пока не выполнил УЖЕ В ПРОЦЕССЕ работы вашей функции желаемую вами подстановку group{I} не будет знать какого типа у вас столбец! Именно эти соображения делают невозможным такие конструкции.

я-таки кое-что

я-таки кое-что придумал на эту тему.. и даже поместил в блоге
Конечно для перебора полей в запросе надо создавать временную таблицу и ковыряться в ней

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023