我是靠谱客的博主 爱笑魔镜,最近开发中收集的这篇文章主要介绍在PL/SQL中怎样判断查询的结果是否为空 ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

iamlaosong文

在PL/SQL中会经常用到表的查询,然后针对查询结果进行处理。那么怎样判断查询的结果是否为空呢?用count(*)先查一次当然可以,可这样做就会多查询一次,如果仅仅一次倒是无关紧要,可是如果在循环中,那么就会大大延长处理时间,增加服务器负担。

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


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


最后

以上就是爱笑魔镜为你收集整理的在PL/SQL中怎样判断查询的结果是否为空 的全部内容,希望文章能够帮你解决在PL/SQL中怎样判断查询的结果是否为空 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部