oracle select into 导致报错

说明:使用select...into语句时,如果查询返回的数据不是1行,就会报no_data_found或者to_many_rows两种异常。

(1)对于to_many_rows是因为返回了多条记录,需要修改sql就好,比如修改或者增加过滤条件,增加distinct关键字筛选等,这个比较容易处理。

(2)当把某条狗1岁对应的名称赋值给v_name,报错:data not found,显而易见是因为是没有找到age=1的记录,特别注意不要和空值混淆。如果能找到age=1的记录,就算name是空值,也是不会报错的。

DECLARE
  v_name VARCHAR2(100);
BEGIN
  select t.name into v_name from dog t where t.age = 1;
END;

 为了能查出记录,我们使用聚合函数,会把返回0条的数据变成返回1条,不管是max、还是min都可以,因为我们select  into是需要返回一条记录,所以使用max() 、min()对于结果是不会有任何改变的。当然如果会返回多条数据时,就会产生影响了。所以使用select into 务必要把筛选条件写好,防止返回多条数据。

 在使用NVL函数,就可以对空值进行处理,如:

 

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值