Код возврата SQL * Plus при неверном имени пользователя или пароле - PullRequest
2 голосов
/ 14 апреля 2011

Я пытаюсь разработать сценарий ANT, который вызывает SQL * Plus и выполняет файл SQL.Используя следующее:

<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 ]

2 голосов
/ 14 апреля 2011
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

Преобразование сценария для использования документа здесь или наличие сценария для подключения после установки sqlerror и передачи информации о подключении в качестве аргументов для сценария.

0 голосов
/ 15 января 2019

Небольшое обновление до предложения @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:\>
0 голосов
/ 07 мая 2013

USERPSW = ronr / wrongpwd

KEY = 'ошибка'

RETCODE = 0

newobjs = $ (sqlplus -s << EOF $ {USERPSW} EOF) </p>

если [[echo $newobjs | grep -ic "$KEY" -gt 0]] затем RETCODE = 1 еще RETCODE = 0 фи

...