我正在尝试开发一个调用SQL * Plus并执行SQL文件的ANT脚本。使用以下内容:
<exec executable="sqlplus" failonerror="true">
<arg value="-LOGON"/>
<arg value="scott/${db.pwdapps}"/>
<arg value="@${scm.target}/install/sql/XXCUST_COMMON_PKG.pks"/>
</exec>
这样可行但是当用户名或密码提供不正确时,SQL * Plus将返回成功状态,因此ANT返回相同的内容。
当用户名或密码不正确时,任何人都知道如何让SQLPlus返回错误状态?
答案 0 :(得分:2)
sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Apr 14 08:48:07 2011
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> whenever sqlerror exit failure
SQL> connect ronr/wrongpwd
ERROR:
ORA-01017: invalid username/password; logon denied
echo $?
1
将脚本转换为使用here文档,或者让脚本在设置sqlerror后执行连接,并将connect info作为脚本的参数传递。
答案 1 :(得分:0)
USERPSW = ronr / wrongpwd
KEY = '错误'
RETCODE = 0
newobjs = $(sqlplus -s&lt;&lt; EOF $ {} USERPSW EOF)
如果[[echo $newobjs | grep -ic "$KEY"
-gt 0]]
然后
RETCODE = 1
其他
RETCODE = 0
网络
答案 2 :(得分:0)
对@ik_zelf提案的小升级。 解决方案/ nolog有效,但限制了sqlplus的打印,因此,如果您需要执行操作的日志,则无法正确编写。
在sqlplus的人中,我找到了-l参数,如果密码错误,该参数将阻止脚本,返回错误并退出命令提示符:
itemArray