有没有人可以在oracle中运行异步操作。oracle中的异步操作
这是我的情况: 我有一个昂贵的过程(说它需要30分钟运行)。我有一个基于Web的前端,可以控制何时运行该进程。我正在寻找从前端触发proc的运行,而不是真的等待proc完成。也就是说,控制应该返回到web应用程序,并具有状态“正在进行”。 我正在寻找一种机制来让控制权返回到前端,而无需等待proc完成执行。
由于提前,
SK
有没有人可以在oracle中运行异步操作。oracle中的异步操作
这是我的情况: 我有一个昂贵的过程(说它需要30分钟运行)。我有一个基于Web的前端,可以控制何时运行该进程。我正在寻找从前端触发proc的运行,而不是真的等待proc完成。也就是说,控制应该返回到web应用程序,并具有状态“正在进行”。 我正在寻找一种机制来让控制权返回到前端,而无需等待proc完成执行。
由于提前,
SK
我愿意为更多的细节第二OMG小马的要求。
根据您要完成的操作,您可能需要查看DBMS_JOBS包。这允许您将作业提交到异步运行的数据库。如果你希望数据库做一些响应计算昂贵的图形用户界面,例如,您的前端可以执行类似
CREATE OR REPLACE PROCEDURE run_asynchronously(p_some_parameter IN PLS_INTEGER,
p_jobno OUT PLS_INTEGER)
AS
BEGIN
dbms_job.submit(p_jobno,
'BEGIN ' ||
' some_expensive_procedure(' ||
to_char(p_some_parameter) || '); ' ||
'END;');
RETURN p_jobno;
END;
这将提交后台作业运行SOME_EXPENSIVE_PROCEDURE,传递P_SOME_PARAMETER。如果SOME_EXPENSIVE_PROCEDURE执行的某些事情无法像发送电子邮件或FTP文件那样回滚,那么作业将不会启动,直到基础事务提交非常好。
+1。尽管我建议你先看看DBMS_SCHEDULER。它有点强大,但它自动提交作业,所以有时候你仍然需要DBMS_JOB。 – 2010-11-09 06:46:02
你能更具体吗? – 2010-11-08 22:09:52