Как получить несколько строк результатов в функциях Postgres?

На самом деле я просто хочу вернуть более одной строки результатов, используя приведенный ниже код. Но я получил только одну строку набора результатов при вызове функции (дата не является проблемой, потому что я проверил одну и ту же дату в обычном запросе на выборку, он извлекает несколько строк результатов).

Как получить несколько строк результатов с помощью приведенной ниже функции?

CREATE OR REPLACE FUNCTION fun_audit_trail(in as_on_date date, out mail_id varchar, out user_id varchar, out user_name varchar, 
        out last_login_time timestamp, out last_logout_time timestamp, out logout_flag varchar, out user_available_flag varchar)
 AS 
$BODY$

BEGIN

    select am.am_usrmailid,am.am_usr_loginid,am.am_usr_name,am.am_last_login_time,am.am_last_logout_time,am.am_logout_flag,am.am_usr_available_flag 
    into mail_id,user_id,user_name,last_login_time,last_logout_time,logout_flag,user_available_flag
    from auth_monitor am where am_last_login_time <= as_on_date;

END $BODY$
  LANGUAGE 'plpgsql' COST 100.0 SECURITY INVOKER;

person abraham    schedule 31.10.2019    source источник
comment
Я думаю, вам нужно вернуть таблицу вместо того, чтобы помещать переменные в out vars. См. stackoverflow.com/questions/ 32824785/   -  person richyen    schedule 31.10.2019
comment
использовать курсор, курсор может содержать несколько записей   -  person user1001    schedule 31.10.2019
comment
Спасибо, таблица возврата с выходным параметром работает нормально.   -  person abraham    schedule 01.11.2019


Ответы (1)


Все, что вам нужно сделать, это добавить

RETURNS SETOF record

после списка параметров.

person Laurenz Albe    schedule 31.10.2019
comment
Спасибо, я тоже пробовал (setof), но он показывает какую-то ошибку. - person abraham; 01.11.2019