Есть ли способ повторить INSERT через ссылку на БД в Oracle, в случае ошибки подключения? - PullRequest
0 голосов
/ 07 июня 2018

Процедура БД при попытке вставить в другую базу данных Oracle по ссылке на БД не может выполнить действие из-за ошибки соединения.Есть ли способ повторить (скажем, повторить 3 раза) INSERT через ссылку на БД в Oracle?

Текст ошибки:

Error in INSERT in ITEM table....
ORA-03113: end-of-file on communication channel 
ORA-02063: preceding line from HRDBLINK

1 Ответ

0 голосов
/ 07 июня 2018

Есть ли способ повторить (скажем, повторить 3 раза) ВСТАВИТЬ

Это может быть один из способов.Запустите INSERT в цикле и пропустите цикл, если вставлена ​​хотя бы одна строка, в противном случае повторите попытку 3 раза.Однако следует помнить, что эта операция будет выполняться вставкой 3 раза, если не было вставлено ни одной строки.Вы можете смягчить его, проверив перед запуском вставку, если это так.

SET SERVEROUTPUT ON;
DECLARE
dblink_err EXCEPTION;
PRAGMA EXCEPTION_INIT(dblink_err, -3113);

BEGIN
    FOR i IN 1..3 LOOP
        BEGIN
            INSERT INTO tst@urdblink ( id ) VALUES ( 3 );
            EXIT WHEN SQL%rowcount > 0;
        EXCEPTION
            WHEN dblink_err THEN
                dbms_output.put_line(sqlcode || ' ERROR occured: Retrying');
        END;
    END LOOP;
END;
/
...