Разумная обработка исключений в Oracle - PullRequest
0 голосов
/ 05 ноября 2018

Как я могу достичь сценария ниже, используя Oracle PL / SQL?

MY_STORED_PROC

BEGIN
  UPDATE1;  
  IF UPDATE1 fails RAISE EXCP1  
  ELSE COMMIT;

  UPDATE2;  
  IF UPDATE2 fails RAISE EXCP2  
  ELSE COMMIT;

EXCEPTION  
  WHEN EXCP1  
    INSERT LOG ('UPDATE1 Failed')  
  WHEN EXCP2  
    INSERT LOG ('UPDATE2 Failed')  
END;

1 Ответ

0 голосов
/ 05 ноября 2018

Это довольно просто:

BEGIN
  BEGIN
    UPDATE1;
    COMMIT;
  EXCEPTION 
    WHEN OTHERS THEN
      RAISE EXCP1;
  END;

  BEGIN
    UPDATE2;
    COMMIT;
  EXCEPTION 
    WHEN OTHERS THEN
      RAISE EXCP2;
  END;
EXCEPTION
  WHEN EXCP1 THEN
    INSERT LOG ('UPDATE1 Failed');
  WHEN EXCP2 THEN
    INSERT LOG ('UPDATE2 Failed');
END;

Вы можете использовать PRAGMA EXCEPTION_INIT, чтобы определить свои собственные исключения, которые будут вызваны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...