oracle 游标的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:38:13
PL/SQL中,定义:
TYPE curCursor IS REF CURSOR;
myCursor curCursor;
现在的使用方法:
OPEN myCursor FOR V_SQL;
LOOP
FETCH myCursor INTO TMP_VALUE;
EXIT WHEN myCursor %NOTFOUND IS NULL ;
END LOOP;
CLOSE myCursor;
如果我只想取结果集中的第一条记录和最后一条记录,该怎么取值?
用 FETCH FIRST FROM myCursor INTO TMP_VALUE1;
FETCH LAST FROM myCursor INTO TMP_VALUE2;
的时候报错。
Compilation errors for PACKAGE BODY PACKAGE
Error: PLS-00103: Encountered the symbol "FROM" when expecting one of the following:
. into bulk
The symbol ". was inserted before "FROM" to continue.
Line: 1002
Text: FETCH FIRST FROM myCursor INTO TMP_VALUE;

游标是一个需要遍历的东西,说形象些,就有点像数据结构里面的链表,你如果不从第一个节点开始逐个向后访问,是无法到达最后一个节点的。

因此你的问题如果硬要用游标解决,唯一的办法是逐个访问,并通过程序逻辑判断是否第一个访问(以及最后一个访问),从而取到相应值。

其实如果你只需要取头、尾,完全没有必要用游标,游标是需要消耗系统资源的,你的问题只需要好好规划应用的SQL语句,通过max、min这两个内建函数便可轻松搞定。

不知我的回答能否解您心中疑惑。