Oracle中判断空游标的方法(二)

2014-11-24 15:01:35 · 作者: · 浏览: 1
01003001002002的数据集);
6
ELSE
7
dbms_output.put_line(数据库中存在FPERIODID为20112012141202260210001003001002002的数据集);
8
ENDIF;
在我的数据库中是存在上述标号的数据集的。但在调试代码的时候:
程序运行不正确。
说明:当游标不FETCH.%ROWCOUNT属性就一直是0,所以根据这个判断是没有用的。一般都是先Fetch一下,执行完Fetch操作后,再利用%NOTFOUND判断Cursor中有没有数据。于是就有了下面的两个测试。
myCursorThird
1
--使用FETCH(成功)数据库中存在限制条件下的数据集
2
OPENmyCursorThirdFOR
3
SELECTA.*FROMSJ_CD_PERIODS AWHEREA.FPERIODID =20112012141202260210001003001002002;
4
FETCHmyCursorThirdINTOrowRecord;
5
IF myCursorThird%NOTFOUNDTHEN
6
dbms_output.put_line(数据库中不存在FPERIODID为20112012141202260210001003001002002的数据集);
7
ELSE
8
dbms_output.put_line(数据库中存在FPERIODID为20112012141202260210001003001002002的数据集);
9
ENDIF;
我的数据库中存在上述的数据集,程序运行的结果为:
程序运行成功。
myCursorForth:
1
--使用FETCH(成功)数据库中不存在限制条件下的数据集
2
OPENmyCursorForthFOR
3
SELECTA.*FROMSJ_CD_PERIODS AWHEREA.FPERIODID =1001;
4
FETCHmyCursorForthINTOrowRecord;
5
IF myCursorForth%NOTFOUNDTHEN
6
dbms_output.put_line(数据库中不存在FPERIODID为1001的数据集);
7
ELSE
8
dbms_output.put_line(数据库中存在FPERIODID为1001的数据集);
9
ENDIF;
我的数据库中不存在1001的数据集。程序运行的结果为:
程序运行正确。
总结:在昨晚和喜姣讨论的时候,我还以为 Oracle中有提供直接判断cursor是否为空的函数,今天来在网上搜索了一下,貌似没有。对于cursor来说,只Open,不Fetch的时候,Cursor是不会知道到底有多少数据的。当然你也可以select count(*)......
欢迎指出错误。
参考帖子:http://bbs.csdn.net/topics/370107459