我正试图找出一种通过存储过程调用实现分页的方法。例如,我有一个“图像”表,说100行。一个网站将要求“第一个”12然后当用户“进入下一页”时,该网站将提出下一个12的请求。
我将使用params(p_Offset和p_RecordCount)得到2,我需要返回一个refcursor。 p_Offset将告诉我从哪里开始获取数据,p_RecordCount将告诉我多少(p_Offset = 13,p_RecordCount = 12将告诉我从第13行开始返回12行。
我们正在使用Oracle 10g,我开始研究RECORD类型,但我有一种感觉,我正在努力使它变得更加困难。任何帮助将不胜感激。
答案 0 :(得分:1)
我想我已经找到了解决方案,但是我仍然很好奇是否有其他/更好的方法来处理它。这就是我想出的:
open refcursor for
select x.*
from (select col1, col2, row_number()
over (order by col desc) rn
from [table])x
where rn >= p_Offset and rownum <= p_RecordCount