如何解决用户名或密码无效时,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
科幻
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。