如何判断数据库中返回的结果集为空

如何判断数据库中返回的结果集为空,第1张

如果是ASP的话,判断一下返回的结果集变量rs是否为

rs.eof

or

rs.bof为真,即结果集为空

.NET的话,要看你是用那种查询返回结果集,如果是返回整个数据集的话,则判断结果集的长度是否为0

1、只有一个查询结果的查询:

select min(to_char(b.arrive_date,'yyyymmdd')||lpad(b.arrive_time,6,0)||c.xs_mc)

into vtmpstr

from tb_evt_bag_mail_rela a, tb_evt_route_bag_rela b, tb_jgjm c

where a.mail_num = vmail_num

。。。。。。

对这个查询,只需判断变量vtmpstr是否为空就可以了,即:

if vtmpstr is null then

注意:查询中用聚合函数才可以这样用,如果直接取一个值,又没有结果,则会出错跳出模块,跑到例外处理那儿去了,如下面语句:

select city_name into vcity_jdj

from tb_county

where xs_code=substr(vrcv_area,1,4)

如果没有查询结果,或者多个查询结果,都会出错跑到例外处理那儿,所以应该写成下面格式:

select min(city_name) into vcity_jdj

from tb_county

where xs_code=substr(vrcv_area,1,4)

2、游标的查询结果:

OPEN cur_get_trans(vin_date,vmail_num)

LOOP

FETCH cur_get_trans

INTO vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,

vmway_code,vflight_name,vdepart_date,vdepart_time

--判断查询结果

if cur_get_trans%found then

。。。

else

。。。

end if

或者退出循环处理,即:

OPEN cur_get_trans(vin_date,vmail_num)

LOOP

FETCH cur_get_trans

INTO vdeal_date,vdeal_time,vdeal_org_code,vlabel_strip,

vmway_code,vflight_name,vdepart_date,vdepart_time

EXIT WHEN cur_get_mail%NOTFOUND

--处理有结果的查询

END LOOP

--处理无结果的查询

--注意,有查询结果处理完毕也会执行到此处,所以要区分上面是否进行过有结果的处理。

CLOSE cur_get_trans

===================================================================

附:

1、游标相关的4个语句:

declare(声明)、open(打开)、fetch(取数)、close(关闭)。

2、游标相关的4个属性:%isopen, %found, %notfound,和 %rowcount

(1)%Isopen:布尔型,用于检测游标是否已经打开。如果游标已经打开,返回true,否则返回false。

(2)%found:布尔型,判断最近一次执行fetch语句后,是否从缓冲区中提取到数据,返回true,否则返回false。

(3)%notfound:与%found相反。

(4)%rowcount:数值型,返回到目前为止已经从游标缓冲区提取数据的行数。在fetch语句没有执行之前,该属性值为0。

使用隐式游标%found属性,sql%found

使用显示游标%found属性,cur_get_trans%found。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9550887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存