Зачем вообще использовать рефкурсор? И returns setof ref_cursor
означает, что вы хотите вернуть более одного рефкурсора, который вы явно не хотите делать.
A language sql
Функция, объявленная как returns table()
, является правильным выбором, если вы хотите вернуть результатиз функции:
CREATE OR REPLACE FUNCTION fun_audit_trail(in as_on_date date)
RETURNS table(mail_id varchar, user_id varchar, user_name varchar,
last_login_time timestamp, last_logout_time timestamp,
logout_flag varchar, user_available_flag varchar)
$BODY$
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
from auth_monitor am
where am_last_login_time <= as_on_date
$BODY$
LANGUAGE sql;
Тогда вы можете использовать это так:
select *
from fun_audit_trail(date '2019-10-20');