Назад | Перейти на главную страницу

SQLPlus для Oracle 11 не откатывается

У меня есть сценарий оболочки, который вызывает файл SQL. Однако даже с AUTOCOMMIT OFF и дальше SQLERROR EXIT ROLLBACK. Sqlplus не выполняет откат.

В моем файле sql есть 3 строки, 3 правильные и 1 неправильные. Например:

INSERT INTO TEST_ROUTING VALUES (24, 'ROUTING');
INSERT INTO TEST_ROUTING VALUES (25, 'ROUTING');
INSERT INTO TEST_ROUTING VALUES (26, 'ROUTING);

Мой сценарий оболочки вызывает этот SQL следующим образом:

$SQLPLUS_PATH/sqlplus -s /nolog <<-EOF>> ${LOGFILE}
        connect $DB_USER/$Password1@$Database1
        AUTOCOMMIT OFF
        @$File1
        WHENEVER SQLERROR EXIT ROLLBACK;
EOF

if [ $? != 0 ]; then
    echo "The SQL failed. Please refer to the log for more information "
    echo "Error code $?"
    echo "8. Outside While "
    while read LINE; do
        -------
    done
fi

Но это никогда не отменяет 3 утверждения. Он фиксирует 2 и выдает ошибку в последних строках.

Часть WHENEVER SQLERROR должна появиться перед фактическим выполнением операторов INSERT (+ перед AUTOCOMMIT отсутствует SET):

$SQLPLUS_PATH/sqlplus -s /nolog <<-EOF>> ${LOGFILE}
    connect $DB_USER/$Password1@$Database1
    SET AUTOCOMMIT OFF
    WHENEVER SQLERROR EXIT ROLLBACK;
    @$File1
EOF