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

时间:2011-04-14 02:41:22

标签: sql oracle ant sqlplus

我正在尝试开发一个调用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返回错误状态?

3 个答案:

答案 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