当前位置:  开发笔记 > 数据库 > 正文

Oracle游标问题

如何解决《Oracle游标问题》经验,为你挑选了1个好方法。

任何人都知道如何做以下事情?

声明游标打开游标fetch游标<<开始在循环中读取游标>>让我们说光标有10条记录.读到第5条记录然后转到第6条记录并进行一些检查.

现在,有可能从第6张唱片回到第5张唱片吗?



1> Justin Cave..:

取决于要求.

您可以使用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.

如果您不想使用分析函数,可以使用PL/SQL集合,将数据BULK COLLECT到这些集合中(如果您有更多数据存储在PGA中,则使用LIMIT子句)然后继续前进向后通过你的收藏.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有