У меня есть таблица с 2 столбцами. Первый серийный и второй - это запрос, который хранится в виде текста. Для более простого вопроса, в конце: я хочу создать функцию, в которую я буду вводить номер серийника в качестве параметра, и функция вернет мне результат запроса, который находится во втором столбце.Запустить текст как запрос
Я знаю, что мне нужно использовать команду «выполнить» из других вопросов, которые я видел здесь, в стеке.
Еще до конечного результата, я сделал эту простую функцию:
CREATE OR REPLACE FUNCTION public.try1()
RETURNS TABLE(datery timestamp without time zone)
LANGUAGE plpgsql
AS $function$
declare
stmt text;
BEGIN
stmt :='SELECT b FROM chks where a=4';
RETURN QUERY
execute stmt ;
END
$function$
В результате этого запроса выбрать форму б CHKS где а = 4:
«выберите сейчас() :: метка времени без часового пояса '
Когда я запускаю функцию, я получаю ошибку при запуске, которая говорит мне, что reutrn of fuction является varchar, а не timestamp, и если я изменю тип возвращаемого значения на varchar, я получаю в результате сам запрос, а не результат запроса.
Что мне здесь не хватает?
В любом случае, существует ли более простой способ сделать это? Я прошу об этом как для моей простой функции, так и для функции с параметром, о котором я упомянул ранее.
ли все сохраненные запросы возвращают одинаковое число столбцов одного и того же типа? –
@Igor - да, они есть. – Balinti