如何通过存储过程并行运行SQL语句

时间:2018-04-23 13:46:16

标签: db2

我的源文件/(INSERT_TERRITORY_SQL3表):

INSERT INTO TERR_CUST (select cnt from test a);

INSERT INTO TERR_CUST (select cnt from test a inner join test b on a.name=b.name;

INSERT INTO TERR_CUST (select cnt from test a inner join test b on a.name=b.name inner join test c on a.name=c.name);

INSERT INTO TERR_CUST (select cnt from test b);

如上所述,文件中有超过50000条语句。

运行以顺序模式运行sql语句的以下存储过程,您能告诉我如何通过存储过程并行运行SQL语句。

CREATE or REPLACE PROCEDURE P_TOP()

LANGUAGE SQL

BEGIN ATOMIC

DECLARE fullname CLOB;

FOR v AS cur1 CURSOR FOR 

SELECT SQL1 from INSERT_TERRITORY_SQL3

WHERE (TERRITORY_KEY<>'0' or TERRITORY_KEY is not null)

DO 

  SET fullname = v.SQL1; 

  PREPARE s1 FROM fullname;

  EXECUTE IMMEDIATE fullname;

END FOR;

END

1 个答案:

答案 0 :(得分:0)

SQL PL存储过程将执行串行语句。 你无法改变它。

如果你为此设计,你可以调用自治程序。

为什么您认为存储过程与并行执行有关? 这通常是应用层问题。

在应用程序级别,您可以将脚本拆分为块并并行提交。该机制取决于您要在其上并行调用脚本的操作系统。

您应对由并行性引起的任何并发问题以及错误检查和事务日志记录容量问题负责。