用户名或密码无效时,SQL * Plus返回代码

| 我正在尝试开发一个调用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返回错误状态吗?     
已邀请:
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之后让脚本进行连接,并将连接信息作为脚本的参数传递。     
对@ik_zelf提案的小升级。 解决方案/ nolog有效,但是限制了sqlplus的打印,因此,如果您需要执行操作的日志,则无法正确编写。 在sqlplus的人中,我找到了-l参数,如果密码错误,该参数将阻止脚本,返回错误并退出命令提示符:
C:\\>sqlplus -l test/test@host

SQL*Plus: Release 12.1.0.2.0 Production on Mar Gen 15 15:27:23 20019
Copyright (c) 1982, 2014, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
SP2-0751: Unable to connect to Oracle. Exiting SQL*Plus    
C:\\>
    
USERPSW = ronr / wrongpwd KEY = \'错误\' RETCODE = 0 newobjs = $(sqlplus -s << EOF $ {USERPSW} EOF) 如果[[
echo $newobjs | grep -ic \"$KEY\"
-gt 0]] 然后 RETCODE = 1 其他 RETCODE = 0 科幻     

要回复问题请先登录注册