对于进行统计的一条SQL文,比如select count(*) from t_time,印象中返回的结果就是一个数字,所以我就在shell程序中直接用这个执行结果来进行其他的IF判断了,
但发现不行,因为db2 select count(*) from t_time的执行结果还附带其他信息,比如:提示多少条记录被选中,如果有标题还附带标题。shell程序如下所示:
dataCount=`db2 "select count(*) from YUS.KASHIDASHIKIN_SUII"`
if [ ${dataCount} -eq 0 ]
then
echo "Get 0 Rows"
else
echo "Get ${dataCount} Rows"
fi
注:dataCount=`db2 "select count(*) from YUS.KASHIDASHIKIN_SUII"`也可以写成dataCount=$(db2 "select count(*) from YUS.KASHIDASHIKIN_SUII")
在DB2命令行窗口中运行也是这样的。
C:\Program Files\IBM\SQLLIB\BIN>db2 select count(*) from t_time
1
-----------
23
1 レコードが選択されました。
对于上面的结果如何只显示总共的记录数23呢,只要在db2后的options选项里直接加-x就可以省略列标题的打印,+x不省略,默认就是+x。如下所示:
C:\Program Files\IBM\SQLLIB\BIN>db2 -x select count(*) from t_time
23
C:\Program Files\IBM\SQLLIB\BIN>db2 +x select count(*) from t_time
1
-----------
23
1 レコードが選択されました。
如此以来,修改下shell程序就可以不显示标题等多余信息了,如下所示:
dataCount=`db2 -x "select count(*) from YUS.KASHIDASHIKIN_SUII"`
if [ ${dataCount} -eq 0 ]
then
echo "Get 0 Rows"
else
echo "Get ${dataCount} Rows"
fi
对于options还有其他的一些选项,在命令窗口输入db2 ? options可以获得更多的选项,如下所示:
C:\Program Files\IBM\SQLLIB\BIN>db2 ? options
db2 [option ...] [db2-command | sql-statement | [? [phrase | message | sqlstate | class-code]]]
option: -a, -c, -e{c|s}, -finfile, -lhistfile, -n, -o, -p, -rreport, -s, -t,-td;, -v, -w, -x, -zoutputfile.
选项 描述 默认设置
-a 显示 SQLCA OFF
-c 自动提交 ON
-e 显示 SQLCODE/SQLSTATE OFF
-f 从输入文件读内容 OFF
-l 历史文件中的日志记录命令 OFF
-n 删除换行字符 OFF
-o 显示输出 ON
-p 显示 db2 交互性命令 ON
-r 将输出报告保存到文件 OFF
-s 出现命令错误时停止执行 OFF
-t 设置语句终止符 OFF
-v 回送当前命令 OFF
-w 显示 FETCH/SELECT 警告消息 ON
-x 省略列标题的打印 OFF
-z 将所有输出保存到输出文件 OFF
更多内容,可以参考IBM官方网站:
http://www.ibm.com/developerworks/cn/data/library/techarticles/0109adamache/0109adamache.html