Когда происходит коммит в вышеуказанной последовательности?
Нет. По крайней мере, я не вижу commit
заявления. Может я слепой. Но в PL / SQL нет "автоматической фиксации". Таким образом, commit
не будет иметь место, пока вы не выпустите его (или не произойдет ваше клиентское программное обеспечение).
в приведенном выше коде учтите, что исключение выдается в середине курсора (например, 3-я или 4-я итерация). внесет ли изменение в это откат и точку сохранения? в настоящее время весь l oop завершен, и все обновления также фиксируются.
Откат к точке сохранения обычно полезен, когда у вас есть несколько операторов DML внутри курсор l oop и вы оба
- хотите убедиться, что для каждой записи курсора операторы DML либо ВСЕ завершатся успешно, либо ни один из них не выполнит
- не хотят фиксировать что угодно, пока не будут обработаны все строки
В вашем случае у вас есть только один update
внутри l oop, и после этого вы меняете значение переменной 'l_count'. Если вы хотите, чтобы обновление откатывалось в случае каких-либо проблем с изменением «l_count», откат к точке сохранения - это то, что вам нужно.
Имейте в виду, что откат к точке сохранения НЕ вернет любые изменения к PL / SQL переменным, таким как 'l_count'. Вы несете ответственность за восстановление их значений по мере необходимости, прежде чем выполнить откат до точки сохранения.