sqlplus中调用shell_shell调用sqlplus的简单问题,初学者急求帮忙

我有这么个项目,oracle导入dmp数据库文件(空库),检查初始化表和数据内容是否正确,然后,启动tomcat后,有5步操作,每部操作都会写入数据库一些数据。我想把这个 测试过程 写成shell脚本来自动化测试。

比如:shell调用sqlplus的方法:

#!/bin/bash

base=`sqlplus -S /nolog <

set heading off feedback off pagesize 0 verify off echo off numwidth 4

conn base/zdsoft

select id from base_code;

exit

EOF`

echo $base

比如第一步:检查初始化数据库的表和数据是否正确的脚本:

我现在的情况是:我有5个不同的库,每个库需要检查的表有10-30张,每张表要检查一些关键字段,各库之间的关联数据,数据量等,下面举个例子:

测试用例1:检查base库,cnet库,root库中base_code表的初始化主键是否都相等(因为每个库不同部门提供,因为沟通不够,导致此表的主键不一致从而出现bug)

#!/bin/bash

base=`sqlplus -S /nolog <

set heading off feedback off pagesize 0 verify off echo off numwidth 4

conn base/password

select id from base_code where unit_id='00000000000000000000000000000000';

exit

EOF`

cnet=`sqlplus -S /nolog <

set heading off feedback off pagesize 0 verify off echo off numwidth 4

conn cnet/password

select id from base_code where unit_id='00000000000000000000000000000000';

exit

EOF`

root=`sqlplus -S /nolog <

set heading off feedback off pagesize 0 verify off echo off numwidth 4

conn root/password

select id from base_code where unit_id='00000000000000000000000000000000';

exit

EOF`

if [ "$base" = "$cnet"  ] && [ "$base" = "$root" ] && [ "$cnet" = "$root" ]; then

echo "pass"

exit 0

else

echo "nopass,select id from base_code" > logs

fi

echo "脚本运行完毕,共运行测试用例200个,其中测试不通过用例数为:"

cat logs |grep nopass|wc -l

检查3个库的base_code的主键,数量是否相同,是则测试通过,否则测试不通过,并且把不通过的sql语句写入日志

最后统计脚本运行完不通过的测试用例的个数有多少个,详细不通过的用例查看logs文件。

那么,我现在遇到的一个最大的问题就是:一条测试用例 就要写 这么多调用sqlplus方法,写了这么多的代码,那么所有测试用例写下来就不得了了。于是,我要想办法让他参数化,或者 函数调用。

我要同时满足 sql返回的结果变量参数化,链接数据库账号参数化,sql语句参数化,类似:

for result in a b c ;do

for user in base cnet root ;do

for sqlword in select1 select2 select3 ;do

$result=`sqlplus -S /nolog <

set heading off feedback off pagesize 0 verify off echo off numwidth 4

conn &user/password

$sqlword

exit

EOF`

done

done

done

-----类似上面的$result,&user,$sqlword.非开尝试了上面3次参数化,结果是:conn &user/password 完全不行。$sqlword 好像可以。$result=可以,但是执行的结果不对,被cut了。

----------------------------------

我刚学这个,实在还不懂如何优化好,请教各位高手,该如何写 才能把 代码量大量减少呢?

上面同时满足2种参数化或3种参数化 该如何 去写呢?

能否通过函数实现呢?

把$result,&user,$sqlword当成函数的3个参数,然后调用,这样子应该方便很多吧,嘿嘿,明天试试。

----------------------------------

十分十分感谢高人帮忙,做我师傅更好,加QQ

-----------------------------------

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

weixin_39700548

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值