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

问题背景 :
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 更好,不知道为什么之前的前辈为什么这么用???


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值