Вам не требуется динамический SQL для добавления интервала в выражение.
CREATE or replace FUNCTION p15d()
RETURNS table(date_ date ) AS $$
declare
i date := current_date;
ii date := current_date + integer '15';
BEGIN
loop
return query select ( i + interval '1 day' )::date;
i = i + 1;
exit when i = ii;
end loop;
END;
$$
LANGUAGE plpgsql;
Но такая функция не нужна, у Postgres уже есть функция generate_series
, которая дает то, что вы хотите.
CREATE or replace FUNCTION p15d()
RETURNS table(date_ date ) AS
$$
select generate_series(current_date+1,current_date + 15,interval '1 day' )::date;
$$
LANGUAGE SQL;
Демо