1、声明包 www.2cto.com
01
createorreplacepackage TAL_TESTis
02
03
-- Author : ADMINISTRATOR
04
-- Created : 2012/12/9 15:15:38
05
-- Purpose : XXXX的测试
06
07
TYPE myCursorTypeISREFCURSOR;
08
09
--测试空游标
10
PROCEDUREp_testEmptyCursor;
11
12
endTAL_TEST;
2、包体
01
createorreplacepackage body TAL_TESTis
02
03
--测试空游标
04
PROCEDUREp_testEmptyCursor
05
IS
06
rowRecord SJ_CD_PERIODS%ROWTYPE;
07
myCursorFirst myCursorType ;
08
myCursorSecond myCursorType;
09
myCursorThird myCursorType;
10
myCursorForth myCursorType;
11
BEGIN
12
--使用notfound(失败)
数据库中不存在限制条件下的数据集 www.2cto.com
13
OPENmyCursorFirstFOR
14
SELECTA.*FROMSJ_CD_PERIODS AWHEREA.FPERIODID =1001;
15
IF myCursorFirst%notfoundTHEN
16
dbms_output.put_line(数据库中不存在FPERIODID为1001的数据集);
17
ELSE
18
dbms_output.put_line(数据库中存在FPERIODID为1001的数据库);
19
ENDIF;
20
21
--使用ROWCOUNT(失败)数据库中存在限制条件下的数据集
22
OPENmyCursorSecondFOR
23
SELECTA.*FROMSJ_CD_PERIODS AWHEREA.FPERIODID =20112012141202260210001003001002002;
24
IF myCursorSecond%ROWCOUNT = 0THEN
25
dbms_output.put_line(数据库中不存在FPERIODID为20112012141202260210001003001002002的数据集);
26
ELSE
27
dbms_output.put_line(数据库中存在FPERIODID为20112012141202260210001003001002002的数据集);
28
29
30
--使用FETCH(成功)数据库中存在限制条件下的数据集
31
OPENmyCursorThirdFOR
32
SELECTA.*FROMSJ_CD_PERIODS AWHEREA.FPERIODID =20112012141202260210001003001002002;
33
FETCHmyCursorThirdINTOrowRecord;
34
IF myCursorThird%NOTFOUNDTHEN
35
dbms_output.put_line(数据库中不存在FPERIODID为20112012141202260210001003001002002的数据集);
36
ELSE
37
dbms_output.put_line(数据库中存在FPERIODID为20112012141202260210001003001002002的数据集);
38
ENDIF;
39
40
--使用FETCH(成功)数据库中不存在限制条件下的数据集
41
OPENmyCursorForthFOR
42
SELECTA.*FROMSJ_CD_PERIODS AWHEREA.FPERIODID =1001;
43
FETCHmyCursorForthINTOrowRecord;
44
IF myCursorForth%NOTFOUNDTHEN
45
dbms_output.put_line(数据库中不存在FPERIODID为1001的数据集);
46
ELSE
47
dbms_output.put_line(数据库中存在FPERIODID为1001的数据集);
48
ENDIF;
49
END;
50
51
endTAL_TEST;
3、下面对上述的测试进行说明
myCursorFirst:
1
--使用notfound(失败) 数据库中不存在限制条件下的数据集
2
OPENmyCursorFirstFOR
3
SELECTA.*FROMSJ_CD_PERIODS AWHEREA.FPERIODID =1001;
4
IF myCursorFirst%notfoundTHEN
5
dbms_output.put_line(数据库中不存在FPERIODID为1001的数据集);
6
ELSE
7
dbms_output.put_line(数据库中存在FPERIODID为1001的数据库);
8
ENDIF;
在我的数据库中是不存在编号1001的数据集的。但在调试代码的时候:
程序运行不正确。
说明:其实上述的IF语句就有问题myCursorFirst%notFound肯定为Flase
myCursorSecond: