Акжан в сети - На уровень вверх(ORA) Возникла необходимость в обработке исключительных ситуаций в PL/SQL процедуре (Oracle7 WG Server Release 7.3.2.2.0). Почему у меня не получается?

SB> Пишу следующий блок:

BEGIN
  INSERT INTO CUSTOM.CAMAIN20
    SELECT * FROM CUSTOM.CAMAIN20TEMP
    WHERE CC_07_01=curCC_07_01 AND CC_07_02=curCC_07_02 AND CC_07_03=curCC_07_03;
  EXCEPTION
    WHEN others THEN
    BEGIN
      DBMS_OUTPUT.PUT_LINE('ВВОД ДУБЛЯ В CUSTOM.CAMAIN20');
      NULL;
    END;
END;

SB> Думал, что при нарушении первичного ключа в таблице CUSTOM.CAMAIN20
SB> обработчик EXCEPTION WHEN others THEN ... ; пропустит строку и программа
SB> пойдет выполняться дальше.Программа же вылетает с сообщением :

Так - это сделать не получится. Hо можно сделать по другому.

Объявить выборку SELECT * FROM CUSTOM.CAMAIN20TEMP WHERE CC_07_01=curCC_07_01 AND CC_07_02=curCC_07_02 AND CC_07_03=curCC_07_03 курсором, а потом примерно так:

loop
  fetch_cursor;
  выход когда фетчить больше нечего;
  begin
    INSERT INTO CUSTOM.CAMAIN20 чего нафетчили;
    EXCEPTION
      WHEN others THEN
      BEGIN
        DBMS_OUTPUT.PUT_LINE('ВВОД ДУБЛЯ В CUSTOM.CAMAIN20');
      END
  end
end loop;

Dmitry Voronenkov

2:5005/56