oracle 游标判空方法


create or replace package TAL_TEST is


TYPE myCursorType IS REF CURSOR;

--测试空游标
PROCEDURE p_testEmptyCursor;

end TAL_TEST;



create or replace package body TAL_TEST is

--测试空游标
PROCEDURE p_testEmptyCursor
IS
rowRecord SJ_CD_PERIODS%ROWTYPE;
myCursorFirst myCursorType ;
myCursorSecond myCursorType;
myCursorThird myCursorType;
myCursorForth myCursorType;
BEGIN
--使用notfound(失败) 数据库中不存在限制条件下的数据集
OPEN myCursorFirst FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '1001' ;
IF myCursorFirst%notfound THEN
dbms_output.put_line('数据库中不存在FPERIODID为1001的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为1001的数据库');
END IF;

--使用ROWCOUNT(失败)数据库中存在限制条件下的数据集
OPEN myCursorSecond FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '20112012141202260210001003001002002';
IF myCursorSecond%ROWCOUNT = 0 THEN
dbms_output.put_line('数据库中不存在FPERIODID为20112012141202260210001003001002002的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为20112012141202260210001003001002002的数据集');
END IF;

--使用FETCH(成功)数据库中存在限制条件下的数据集
OPEN myCursorThird FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '20112012141202260210001003001002002';
FETCH myCursorThird INTO rowRecord;
IF myCursorThird%NOTFOUND THEN
dbms_output.put_line('数据库中不存在FPERIODID为20112012141202260210001003001002002的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为20112012141202260210001003001002002的数据集');
END IF;

--使用FETCH(成功)数据库中不存在限制条件下的数据集
OPEN myCursorForth FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '1001';
FETCH myCursorForth INTO rowRecord;
IF myCursorForth%NOTFOUND THEN
dbms_output.put_line('数据库中不存在FPERIODID为1001的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为1001的数据集');
END IF;
END;

end TAL_TEST;


myCursorFirst:

--使用notfound(失败) 数据库中不存在限制条件下的数据集
OPEN myCursorFirst FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '1001' ;
IF myCursorFirst%notfound THEN
dbms_output.put_line('数据库中不存在FPERIODID为1001的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为1001的数据库');
END IF;

myCursorSecond:

--使用ROWCOUNT(失败)数据库中存在限制条件下的数据集
OPEN myCursorSecond FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '20112012141202260210001003001002002';
IF myCursorSecond%ROWCOUNT = 0 THEN
dbms_output.put_line('数据库中不存在FPERIODID为20112012141202260210001003001002002的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为20112012141202260210001003001002002的数据集');
END IF;

myCursorThird

--使用FETCH(成功)数据库中存在限制条件下的数据集
OPEN myCursorThird FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '20112012141202260210001003001002002';
FETCH myCursorThird INTO rowRecord;
IF myCursorThird%NOTFOUND THEN
dbms_output.put_line('数据库中不存在FPERIODID为20112012141202260210001003001002002的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为20112012141202260210001003001002002的数据集');
END IF;

myCursorForth:

--使用FETCH(成功)数据库中不存在限制条件下的数据集
OPEN myCursorForth FOR
SELECT A.* FROM SJ_CD_PERIODS A WHERE A.FPERIODID = '1001';
FETCH myCursorForth INTO rowRecord;
IF myCursorForth%NOTFOUND THEN
dbms_output.put_line('数据库中不存在FPERIODID为1001的数据集');
ELSE
dbms_output.put_line('数据库中存在FPERIODID为1001的数据集');
END IF;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值