我正在我的程序中形成一个动态SQL,如下所示返回REFCURSOR中的特定行:
/*
out_top_cur OUT SYS_REFCURSOR
lv_query:='select '||lv_column_list||' from ( select /*+ first_rows(10) */ '||lv_column_list||', row_number() over (order by '||pk_column_list||' ) rn from '||lv_actual_table_name||' ) where rn in ( '||l_rownr||' ) order by rn ';
OPEN out_top_cur FOR lv_query;
*/
I derived the variable l_rownr in my procedure like below :
51,101,151,201,251,301,351,401,451,501
/*
FOR cntr IN l_min_page..l_max_page
LOOP
l_rownr:=l_rownr||','||(((cntr-1)*lv_page_cnt)+1);
END LOOP;
l_rownr:=LTRIM(l_rownr,',');
*/
每个rownum表示正在显示的页面的第一行。 (每个页面显示50行,并在程序中相应计算..在这种情况下,我知道我必须显示第2页到第11页的第一条记录) 现在虽然有rownum,但我需要将页面#以及这些行中的每一行发送到调用服务。
是否可以保持rownumber&某些表类型中的页面&然后加入最后的查询? 无法想到任何直接的解决方案..非常感谢任何帮助。