|
как перехватить все исключения?
|
|||
---|---|---|---|
#18+
SY AlexFF__| Чтобы сделать что-нибудь нужно иметь управление, а если клиент завершает CALL, например по Ora-01013, исполнение текущего кода прерывается. При этом сама сессия может оставаться в добром здравии и готова к дальнейшим действиям. Именно. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73.
SY. ну нет же. если клиент инициирует ORA-01013: user requested cancel of current operation то процедура может сохранить управление обработав адресно ORA-01013 . Можно вообще ее подавить и продолжить работу ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 13:56 |
|
как перехватить все исключения?
|
|||
---|---|---|---|
#18+
legg ну нет же. если клиент инициирует ORA-01013: user requested cancel of current operation то процедура может сохранить управление обработав адресно ORA-01013 . Можно вообще ее подавить и продолжить работу Это как? Посмотри внимательно на пример: клиент (SQL*Plus) вызывает процедуру P2 которая в свою очередь вызывает процедуру PKG1.P1. Обе процедуры имеют exception блок на when others. Во время выполнения PKG1.P1 имитируем ORA-01013. Ни один exception блок её не ловит - мы вылетаем прямиком к клиенту. Посему если PKG1.P1 и/или P2 могут в случае ORA-01013 оставить приложение в "незавершенном" состоянии то проверить это может только клиент. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 15:01 |
|
как перехватить все исключения?
|
|||
---|---|---|---|
#18+
Еще одно место где можно отловить ORA-01013 это AFTER SERVERERROR триггер: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 15:11 |
|
как перехватить все исключения?
|
|||
---|---|---|---|
#18+
SY legg ну нет же. если клиент инициирует ORA-01013: user requested cancel of current operation то процедура может сохранить управление обработав адресно ORA-01013 . Можно вообще ее подавить и продолжить работу Это как? Посмотри внимательно на пример: клиент (SQL*Plus) вызывает процедуру P2 которая в свою очередь вызывает процедуру PKG1.P1. Обе процедуры имеют exception блок на when others. Во время выполнения PKG1.P1 имитируем ORA-01013. Ни один exception блок её не ловит - мы вылетаем прямиком к клиенту. Посему если PKG1.P1 и/или P2 могут в случае ORA-01013 оставить приложение в "незавершенном" состоянии то проверить это может только клиент. SY. так и я о том :) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
01013 не ловится WHEN others но ловится WHEN e_1013 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 15:15 |
|
|
start [/forum/topic.php?fid=52&msg=40064475&tid=1880267]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
121ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 244ms |
total: | 455ms |
0 / 0 |