Oracle:select into 查询没有记录的解决办法

Posted SimonHu1993

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle:select into 查询没有记录的解决办法相关的知识,希望对你有一定的参考价值。

 在数据库编程中,select into 语句可以将数据库的某些值赋值给程序的变量,使用起来非常方便。但很多时候也会遇到查询出来没有记录的情况,这时程序会出错。

可以使用

exception
when NO_DATA_FOUND then

但是如merge into using 查不到时可以使用该方法;

merge into  web_user_vip wv using (select vip_type,id from(
      select nvl(max(vip_type),0)vip_type ,nvl(max(id),0)id from web_user_vip where user_id = v_user_id and source = 2 and status =1 and 
      vip_type = v_vip_type)where rownum = 1)e on (e.vip_type = wv.vip_type)
      when matched then
      UPDATE  SET wv.expire_time = v_expire_end_date where wv.id = e.id
      when not matched then
      insert(id,user_id,vip_type,expire_time,create_time,source,enterprise_id,status)
      VALUES(xshtest.WEB_USER_VIP_SEQ.NEXTVAL,v_user_id,v_vip_type,v_expire_end_date,sysdate,2,v_enterprise_id,1);

看下面示例:

select 没有数据的时候:

select t.prj_type_id into :id from PRJ_C_TYPE t where t.prj_type_name=‘abc‘

使用聚合函数后:

select nvl(max(t.prj_type_id),0) into :id from PRJ_C_TYPE t where t.prj_type_name=‘abc‘

 



以上是关于Oracle:select into 查询没有记录的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

oracle存储过程select语句必须带into吗

关于oracle存储过程select into 未找到数据问题

在oracle中使用merge into实现更新和插入数据

Oracle中insert into select和select into的区别

如何在oracle中 insert into 多条记录

Access 2013 VBA - 后续 SELECT 查询未找到来自 INSERT INTO 的新记录