ORA-06519: active autonomous transaction detected and rolled back

文档解释

ORA-06519: active autonomous transaction detected and rolled back

Cause: Before returning from an autonomous PL/SQL block, all autonomous transactions started within the block must be completed (either committed or rolled back). If not, the active autonomous transaction is implicitly rolled back and this error is raised.

Action: Ensure that before returning from an autonomous PL/SQL block, any active autonomous transactions are explicitly committed or rolled back. ———————————————————————– 06520 through 06529 reserved for Foreign function errors

这个错误指的是,ORACLE发现存在某自动事务并将其回滚。被回滚的自动事务包括存储过程或函数调用的行为,它们不会被显式提交也不会被回滚。

官方解释

ORA-06519是提醒用户在处理一些触发器时,避免出现自动初始化事务(autonomous transaction)。当使用触发器调用过程时,可能会导致触发器中运行的过程被自动提交,而ORA-06519告知用户该行为并回滚了这个自动事务。

常见案例

当运行正在执行触发器内调用的函数或过程时,可能会引发ORA-06519错误消息。

正常处理方法及步骤

1. 检查触发器代码,确保不使用任何用于提交或回滚的语句。

2. 如果触发器需要在自动事务中执行代码,请使用 autonomous_transaction保护短语。

3. 检查调用的过程或函数的代码,确认它们没有commit或rollback。

4. 使用pragma autonomous_transaction语句将调用的函数封装在自动事务中。

你可能感兴趣的