drop table a;
drop sequence aseq;
create table a (i integer primary key);
create sequence aseq;
insert into a(i) select * from generate_series(1,1000000) where random() > 0.25;

create or replace function getnext() returns int as $$
DECLARE
	niq int;
	tf bool;
BEGIN
	loop
		select nextval('aseq') into niq;
		select case 
			when (select true from (select niq as i) as x join a on (a.i=x.i)) 
			then TRUE 
			else FALSE end into tf;
		exit when not tf ;
	end loop;
	return niq;
END;
$$ language plpgsql;
