#postgresql #function #plpgsql
#postgresql #функция #plpgsql
Вопрос:
Я впервые создал динамическую функцию SQL и задаюсь вопросом, как правильно вызвать эту функцию? Вот код
CREATE OR REPLACE FUNCTION functions.search_function(_columns text) RETURNS TABLE(student text, student_id text, professor_name text, subject text, subject_time text, room_number text, building text) LANGUAGE plpgsql AS $func$ DECLARE _columns text := 'student_id::text, subject_timetime::text, building::text'; BEGIN RETURN QUERY EXECUTE ' SELECT student, professor_name, subject, room_number, ' || _columns || ' FROM "school_records_table" ' USING _columns; END $func$;
Я получаю сообщение об ошибке, когда пытаюсь это сделать
SELECT functions.searchandfilter2_function( ('students') )
Комментарии:
1. Можете ли вы показать сообщение об ошибке?
2. Попробуйте это :
SELECT functions.searchandfilter2_function('students')
3. в нем говорится, что столбец не существует
4. ВЫПОЛНИТЕ ЗАПРОС НА ВОЗВРАТ «ВЫБЕРИТЕ ученика, имя преподавателя, предмет, номер комнаты, $1 ИЗ таблицы school_records_table» С ИСПОЛЬЗОВАНИЕМ _columns;
5. Эта функция не имеет для меня никакого смысла. Вы используете динамический список столбцов в SELECT, но ваша функция возвращает статический список столбцов результатов. Так зачем вообще нужен динамический SQL? Но вы не можете передавать имена столбцов с
USING
помощью предложения — оно используется только для передачи значений (не идентификаторов).