multithreading - 在 Oracle 过程中实现多线程

标签 multithreading oracle plsql oracle10g dbms-scheduler

我正在研究 Oracle 10gR2。

这是我的问题 -

我有一个程序,我们称之为 *proc_parent* (在包内)应该调用另一个过程,我们称之为 *用户创建* .我要打电话 *用户创建* 在一个循环中,它从表中读取一些列 - 这些列值作为参数传递给 *用户创建* 程序。

代码是这样的:

FOR i IN (SELECT    community_id,
                        password,
                        username 
               FROM     customer 
               WHERE    community_id IS NOT NULL 
               AND      created_by = 'SRC_GLOB'
              )
     LOOP
        user_creation (i.community_id,i.password,i.username);
     END LOOP;

COMMIT;

user_Creation 过程正在为某些业务逻辑调用 Web 服务,然后根据响应更新表。

我需要找到一种可以在这里使用多线程的方法,以便我可以运行此过程的多个实例来加快速度。我知道我可以使用 *DBMS_SCHEDULER* 可能 *DBMS_ALERT* 但我无法弄清楚如何在循环中使用它们。

有人可以指导我朝着正确的方向前进吗?

谢谢,
安库尔

最佳答案

您可以做的是同时提交大量作业。见 Example 28-2 Creating a Set of Lightweight Jobs in a Single Transaction

这会在 pl/sql 表中填充您要在一个 tx 中同时提交的所有作业。一旦它们被提交(启用),它们就会开始运行,数量是系统可以处理的,或者是资源管理器计划允许的数量。

轻量级作业的开销非常......最小/轻。

关于multithreading - 在 Oracle 过程中实现多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8213415/

相关文章:

sql - 选择分隔字符串作为 Oracle sql 中的表

java - 我有这个错误 : java. sql.SQLException: Java 应用程序中的列名无效

oracle - 如何从 powershell 执行 PL/SQL 包?

c# - 如何干净地暂停一个线程,直到另一个线程完成或更改一个值

python - 使用python多线程不断获取输入

c - 如何在eclipse中附加一个进程来调试多进程程序

python - 如何共享多线程 python 脚本的标准输出?

node.js - 如果我们不知道存储过程绑定(bind)参数,如何在node-oracledb中执行 "Stored Procedure"查询?

java - pl sql 和 java - 创建动态查询

mysql - 将数据从一个表插入到另一个表但不需要主 ID