Ich suche nach dem Äquivalent von Java thread.join() in PL/SQL. I.e. Ich möchte eine Reihe von Jobs (Threads) starten und dann warten, bis sie fertig sind.Warten auf einen abgeschlossenen Job in Oracle PL/SQL?
Wie ist das in PL/SQL möglich?
Ich denke an dbms_job.submit (ich weiß, es ist veraltet). dbms_scheduler ist auch eine Alternative.
Mein Code:
DECLARE
jobno1 number;
jobno2 number;
BEGIN
dbms_job.submit(jobno1,'begin dbms_lock.sleep(10); dbms_output.put_line(''job 1 exit'');end;');
dbms_job.submit(jobno2,'begin dbms_lock.sleep(10); dbms_output.put_line(''job 2 exit'');end;');
dbms_job.run(jobno1);
dbms_job.run(jobno2);
//Need code to Wait for jobno1 to finish
//Need code to Wait for jobno2 to finish
END;
Eine ebenso gute Lösung, wenn Sie immer noch 'DBMS_JOB' anstelle von' DBMS_SCHEDULER' verwenden! –
+1, nette Idee .. irgendwelche Ideen, wie ich auf die 2 Jobs warten würde (wie Sie erwähnt haben, gibt es eine Wahrscheinlichkeit, dass ein Job beendet wird, bevor der Waitany-Schritt aufgerufen wird). Eine Lösung, die mir einfällt, ist, dass beide Jobs dasselbe Ereignis werfen und dann zweimal auffliegen ... Alternativen? – vicsz
WaitAny macht den Trick, wie Sie erwähnt haben. – vicsz