有沒有人可以在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