任何人都知道如何做以下事情?
声明游标打开游标fetch游标<<开始在循环中读取游标>>让我们说光标有10条记录.读到第5条记录然后转到第6条记录并进行一些检查.
现在,有可能从第6张唱片回到第5张唱片吗?
取决于要求.
您可以使用LAG()和LEAD()分析函数来获取下一行和前一行的信息,即
SQL> ed
Wrote file afiedt.buf
1 select ename,
2 sal,
3 lead(sal) over (order by ename) next_sal,
4 lag(sal) over (order by ename) prior_sal
5 from emp
6* order by ename
SQL> /
ENAME SAL NEXT_SAL PRIOR_SAL
---------- ---------- ---------- ----------
ADAMS 1100 1600
ALLEN 1600 2850 1100
BLAKE 2850 2450 1600
CLARK 2450 3000 2850
FORD 3000 950 2450
JAMES 950 2975 3000
JONES 2975 5000 950
KING 5000 1250 2975
MARTIN 1250 1300 5000
MILLER 1300 3000 1250
SCOTT 3000 800 1300
ENAME SAL NEXT_SAL PRIOR_SAL
---------- ---------- ---------- ----------
SMITH 800 1500 3000
TURNER 1500 1250 800
WARD 1250 1500
14 rows selected.
Run Code Online (Sandbox Code Playgroud)
如果您不想使用分析函数,可以使用PL/SQL集合,将数据BULK COLLECT到这些集合中(如果您有更多数据存储在PGA中,则使用LIMIT子句)然后继续前进向后通过你的收藏.