sql scripts 与遇到的问题:传值和判断变量为空

本文介绍了两种处理SQL查询中空值的方法:一是通过nvl函数直接在SQL中设定默认值;二是利用Shell脚本进行条件判断。这两种方法有助于避免因查询结果为空而导致的后续处理错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景 :
1,下面是原来的sql script:目的是返回tablename 中一个最大的batch_no值
aa.sql
set term off
column batch_cnt noprint new_value total
select max(batch_no) batch_cnt from tablename;
set term on
prompt &total
exit

call aa.sql的方法就是在shell scripts 用 number =`sqlplus username/pws@DBname @aa.sql `

2,问题是当tablename里没有任何纪录的时候,total返回的根本就是空的,
  在shell中无法使用

方法一:让total 在tablename里没有任何纪录的时候,返回0, 这样就不会返回空值

select nvl(max(batch_no),0) batch_cnt from tablename; 

nvl (a,b) :if a为null, 返回b

方法二:在shell scripts中,判断变量是否为空,然后赋值

if [ -z "$number " ]
   then
     echo no data unreleased ..
   else
     echo max batch is not 0,is :$number
fi


notes:应该是采用pl/sql中的function 更好,不知道为什么之前的前辈为什么这么用???


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值