Я пытаюсь перебрать несколько полей и запустить функцию на них:Перебор заданного списка значений в PL/PgSQL
FOR field IN ARRAY['f1','f2'] LOOP
execute pg_temp.converFieldToLower(newTableNameRaw,field)
END LOOP;
Это функция я пытаюсь использовать:
CREATE OR REPLACE FUNCTION pg_temp.converFieldToLower(t varchar, f varchar) RETURNS void AS $$
#variable_conflict use_variable
BEGIN
EXECUTE concat_ws (' ', 'UPDATE',t,'SET',f,'= LOWER(',f,')');
END;
$$ LANGUAGE plpgsql;
Похоже, что это неправильный способ объявить массив, что я делаю неправильно?
ERROR: syntax error at or near "ARRAY" LINE 49: FOR field IN ARRAY['f1','f2'] LOOP
Вы пишете * «поля» *, но демонстрируете * постоянные значения *. Итак: Константы, параметры или переменные plpgsql или поля таблицы? И является ли вход фактическим массивом? И хотите ли вы отказаться от любых результатов, например, продемонстрировать или присвоить результаты целям? Лучшее решение зависит от деталей вашей ситуации. Лучше всего предоставить полную (как можно более широкую) функцию plpgsql, показывающую задействованные типы данных, параметры функции и т. Д. –
Я использую константные текстовые значения, как я демонстрирую. –