PLSQL:子作业作为新会话?

问题描述 投票:0回答:1

我知道有 pragmaautonomous_transaction。但我还能得到更多吗?

我想启动一个与调用例程完全隔离的子例程(包中的过程)。

即:

  • 调用例程结束时,子例程不会结束。
  • 调用例程继续工作,无需等待子例程完成。

所以基本上,我想开始一个新会话并在该会话中运行子例程。但我该如何存档呢?

最好的,彼得

session plsql
1个回答
0
投票

如果“子例程”实际上是一个存储过程(如果不是,则使其如此),那么一种选择是从主(调用)过程调度它;它会“立即”运行,并且仅运行一次。这样做,主程序将继续做它所做的事情,而子例程将单独做它所做的事情。 使用

DBMS_SCHEDULER

。基本上,你会

create procedure p_main is
begin
   ... do something here

   -- call subroutine
   dbms_scheduler.create_job(..., p_subroutine, ...)

   ... continue main procedure
end

© www.soinside.com 2019 - 2024. All rights reserved.