select acctnum = '&&acctnum' -- user prompt -- the following will be displayed to user select col1, col2, col3, datecol4 from tabl1 t1, -- look up table tabl2 t2, tabl3 t3 -- large table -- six years old data where trunc(recdate between) '01-Jan-00' AND '31-DEC-06'); Perhaps a procedure might be a better approach where I can store the result set in a variable and loop until my max_rec = 15 is reached, min_rec = 3. Therefore I'll have to iterate 5 x and after each set of 3 rec allow user to hit enter to proceed etc... also set up exeption when no record is found or a rec is invalid. Note that in the result the $$ amount varies whether a specific ename is found. i.e. : if ename = x then $$$1 -- display this elseif $$$2 else 0$$ end if; something kind of similar to this: DECLARE enum varchar2(27); ename tabname.colname%type; somedate tabname.datecol datetype; $$1 number(12,2); $$2 number(12,2); max_rec number(3) not null := 15 min_rec number(3) not null := 3 i binary_integer; rec_cnt binary_integer; finalresult := NULL; function get_something( col1 in sometype, -- input by usr col2 out tabname.col%type, col3 out tabname.datecol date, -- condition if name1 display $$1 else reverse name1 out tabname.ename1%type, name2 out tabname.ename2%type, $$1 out tabname.$$1, $$2 out tabname.$$2, return finalresult out finalresult); begin select acctnum = '&&acctnum' ; -- return the following to user select datecol, col1, col2, col3 $$l, --id condition is true or $$2 into finalresult -- store resultSet here from tab1 t1, tab2 t2, tab3 t3, tab4 t4, tab5 t5 -- predicate below w/ joins where x.col = z.col and -- more joins and -- return(finalresult); exception when no_data_found then -- do something end; begin -- loop not sure it is right if (max_rec > 15 then dbms_output.put_line('No more record(s) allowed.'); exit; elseif min_rec <= 3 then min_rec := min_rec +3 -- iterate 5x dbms_output.put_line('Hit Enter for 3 more records.'); else -- all is well max rec is reached dbms_output.put_line( rec_cnt, 'record(s) were found.'); exit; endif end; begin end;