shell脚本中sql语句得到一个值,赋值给变量出错

get_msisdn()
{
CMONTH=`date +%m`
day=`date +%Y%m%d`
echo $day
echo "select goodsname from goods_info_08 where goodsname like '%SVC_20100816351%';" > /idep/test/query.sql

sqlplus idep_admin@idepdb/sxdb9876 @/idep/test/query.sql<<!
/
exit
!
}

### main ####
CHECK_DIR=/idep/test
get_msisdn

结果:
GOODSNAME
--------------------------------------------------------------------------------
SVC_20100816351
SVC_20100816351
SVC_20100816351
SVC_20100816351

SQL>
GOODSNAME
--------------------------------------------------------------------------------
SVC_20100816351
SVC_20100816351
SVC_20100816351
SVC_20100816351

SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

为什么会出现2次结果?
如何把输出的结果赋值给一个变量?

我不知道你的语句为什么会产生重复的结果,最好检查一下你的代码。关于将语句输出赋值到变量的问题请你参照一下我测试的这份代码
get_msisdn()
{
echo -e "
set feedback off;\n
set pagesize 0;\n
spool result.log;\n
select prono from pl.tbassignp where model = 'ZFN';\n
spool off;\n
exit;
" > query.sql

sqlplus pl/oracle@mydb @query.sql|head -0

result=`cat result.log`

echo ${result}

exit
}

get_msisdn

它首先设置输出的格式如set feedback off; set pagesize 0;,然后将语句的输出指定到文件result.log,最后使用cat命令将结果显示并赋值给变量result。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网