vic*_*csz 4 oracle multithreading plsql
我在PL/SQL中寻找相当于Java的thread.join().即我想开始一些工作(线程),然后等待它们完成.
这怎么可能在PL/SQL中?
我正在考虑使用dbms_job.submit(我知道它已被弃用).dbms_scheduler也是一种替代方案.
我的代码:
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;
Run Code Online (Sandbox Code Playgroud)
我喜欢Adam Hawkes使用DBMS_SCHEDULER链的解决方案.由于我还在使用DBMS_JOB并且还没有重写代码,所以我不知道.
无论如何......我目前使用的解决方案是DBMS_JOB的组合(尽管您应该使用DBMS_SCHEDULER,因为DBMS_JOB已被弃用)和DBMS_ALERT.
使用DBMS_JOB创建作业.然后我们使用dbms_alert.register和dbms_alert.waitany等待作业完成.完成后的每个作业都使用dbms_alert.signal.如果作业完成并且在父母准备好之前发出信号可能会有问题,但我相信你可以解决这个问题.
我猜测DBMS_SCHEDULER链可能就是你现在应该这样做的方式,但我只想添加完整性的答案.
| 归档时间: |
|
| 查看次数: |
6657 次 |
| 最近记录: |