首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle中并行插入

在Oracle中并行插入
EN

Stack Overflow用户
提问于 2015-07-27 10:04:10
回答 1查看 329关注 0票数 1

我有一个带有SQL语句的表。

代码语言:javascript
复制
rules_table
---------------------------------------
| rule_id | rule           | run_rule |
---------------------------------------
| 01      | INSERT INTO... | yes      |
---------------------------------------
| 02      | INSERT INTO... | no       |
---------------------------------------
| 03      | INSERT INTO... | yes      |
---------------------------------------

每个insert语句大约需要2-3分钟才能完成,其中有几百个,每个插入都采用以下形式:

代码语言:javascript
复制
INSERT INTO some_table
(column1, column2, ... column_n )
SELECT expression1, expression2, ... expression_n
FROM source_table
WHERE conditions;

有办法并行运行insert语句吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-27 11:03:38

经过所有通过注释here和她的enter link description heree进行的讨论,并且您不能更改当前的设计,我建议并行执行它们的唯一方法是使用DBMS_SCHEDULER

例如,

代码语言:javascript
复制
BEGIN
    DBMS_SCHEDULER.RUN_JOB('pkg1.proc1', false);
    DBMS_SCHEDULER.RUN_JOB('pkg2.proc2', false);
    DBMS_SCHEDULER.RUN_JOB('pkg3.proc3', false);
END;
/

因此,您可以在各自的过程中使用所需的插入语句。

您需要使用EXECUTE IMMEDIATE来执行过程中的INSERT语句。当您执行上面的PL/SQL块时,它将运行并行中的所有过程。将rule_id作为IN参数发送到过程,基于rule_id,您可以调用EXECUTE IMMEDIATE来运行所需的语句。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31650235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档