У меня есть SQL функция в PostgreSQL, которая динамически возвращает имена столбцов таблицы. Folfoling - это функция, которая возвращает мне список имен столбцов (отформатированный).
ФУНКЦИЯ
CREATE OR REPLACE FUNCTION falc_app.get_quoted_column_names_for_a_table(sel_table_name text)
RETURNS TABLE(
script text
)
AS
$$
select array_to_string(
array(
select CAST ('|| quote_nullable(' || (column_name) ||') || ' as text) as script
FROM information_schema.COLUMNS
WHERE COLUMNS.table_schema = 'falc_app'
AND COLUMNS.TABLE_NAME = sel_table_name
ORDER BY COLUMNS.ordinal_position ), ''','' ')
$$
LANGUAGE sql;
ВЫХОД
'col_username','col_password',......
ПРОБЛЕМА
Когда я пытаясь выбрать эту функцию с помощью приведенного ниже кода, она работает нормально.
select falc_app.get_column_names_for_a_table(usertable);
, но когда я пытаюсь использовать это внутри кода другой функции, происходит следующее: скорее не разрешается имя столбца, а разрешается к выводу ниже, есть ли способ получить такое же поведение, как при выборе функции с помощью оператора select
|| quote_nullable(col_username) || ',' || quote_nullable(col_password) ||......