在Oracle中,有没有办法在连接错误的情况下通过DB链接重试插入?
由于连接错误,尝试使用DB link插入另一个Oracle数据库的DB过程无法执行该活动。有没有办法在Oracle中通过DB链接重试(比如重试3次)INSERT 错误文本: Error in INSERT in ITEM table.... ORA-03113: end-of-file on communication channel ORA-02063: preceding line from HRDBLINK 在项目表中插入时出错。。。。 ORA-03113:通信通道上的文件结束 ORA-02063:来自HRDBLINK的前一行 有没有办法重试(比如重试3次)插入 这可能是一种方式。在循环中运行在Oracle中,有没有办法在连接错误的情况下通过DB链接重试插入?,oracle,oracle11g,dblink,Oracle,Oracle11g,Dblink,由于连接错误,尝试使用DB link插入另一个Oracle数据库的DB过程无法执行该活动。有没有办法在Oracle中通过DB链接重试(比如重试3次)INSERT 错误文本: Error in INSERT in ITEM table.... ORA-03113: end-of-file on communication channel ORA-02063: preceding line from HRDBLINK 在项目表中插入时出错。。。。 ORA-03113:通信通道上的文件结束 ORA-
INSERT
,如果至少插入了一行,则跳过循环,否则重试3次。但要记住的一点是,如果没有插入行,则将运行insert 3次。如果是这样的话,您可以在运行insert之前进行检查来缓解这种情况
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;
/
请检查我的答案,如果它对您有帮助,请接受,或者为给定的解决方案提供相关反馈(评论)。请阅读:了解为什么它很重要。