Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на вложени транзакции в oracle

Oracle не поддържа вложени транзакции. Ако транзакцията се ангажира, тя се ангажира. Ето защо обикновено не искате да извършвате (или връщате назад) транзакция в съхранена процедура, което затруднява повторното използване на процедурата другаде, ако семантиката на транзакцията ви се различава.

Можете обаче да декларирате точка на запис в началото на вашата процедура и да се върнете обратно към тази точка на запис в случай на грешка. Ако след това премахнете комита, тогава транзакцията се контролира единствено от кода на приложението, а не от кода на базата данни

begin
  savepoint beginning_of_proc;

  insert/update/delete...

exception 
  when OTHERS then 
    rollback to beginning_of_proc;
    raise;
end;

В този случай обаче моето пристрастие би било да нямам точка за запис в кода, да нямам връщане назад и да не хвана изключението, освен ако не правите нещо полезно с него. Просто направете DML, оставете всички изключения да бъдат изхвърлени и ги обработвайте във вашето приложение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извършите инсталиране на EBS 12.2 Vision екземпляр

  2. Поправете „Приложението „SQLDeveloper.app“ не може да бъде отворено.“

  3. Изберете от таблицата, като знаете само дата без час (ORACLE)

  4. Как да получите скрипт за таблица в Oracle SQL Developer?

  5. таблица или изглед на oracle не съществуват от вътрешната съхранена процедура