Stored procedures 存储过程中的原子插入

Stored procedures 存储过程中的原子插入,stored-procedures,db2,cobol,db2-zos,Stored Procedures,Db2,Cobol,Db2 Zos,我对存储过程相当陌生。我必须为原子插入(massinert)设计一个存储过程。我正在使用COBOL程序调用DB2中的存储过程。我将在数组中存储值,并且必须一次性插入所有值。下面是我们在COBOL程序中使用的查询,我必须将其转换为存储过程 INSERT INTO TABLE_NAME (COLUMN1 ,COLUMN2 ,COLUMN3 ,COLUMN4 ,COLUMN5) VALUES (VALUE1 ,VALUE2 ,VALUE3 ,VALUE4 ,VALUE5) FOR WS-SUB

我对存储过程相当陌生。我必须为原子插入(massinert)设计一个存储过程。我正在使用COBOL程序调用DB2中的存储过程。我将在数组中存储值,并且必须一次性插入所有值。下面是我们在COBOL程序中使用的查询,我必须将其转换为存储过程

INSERT INTO TABLE_NAME
(COLUMN1
,COLUMN2
,COLUMN3
,COLUMN4
,COLUMN5)
VALUES
(VALUE1
,VALUE2
,VALUE3
,VALUE4
,VALUE5)
FOR  WS-SUB   ROWS
ATOMIC
VALUE1、VALUE2、VALUE3、VALUE4、VALUE5是数组元素,WS-SUB是出现的次数

我想知道,我是否可以在存储过程中处理数组,或者是否可以在DB2存储过程中进行原子插入

INSERT INTO TABLE_NAME
(COLUMN1
,COLUMN2
,COLUMN3
,COLUMN4
,COLUMN5)
VALUES
(VALUE1
,VALUE2
,VALUE3
,VALUE4
,VALUE5)
FOR  WS-SUB   ROWS
ATOMIC

提前感谢。

下面是z/OS 12.0.0上DB2的文档:

DB2存储过程可以配置为使用数组作为参数类型,请参阅

但是,如果您打算从COBOL调用此函数,您可能会遇到以下问题,如文档所示:

COBOL预编译器不支持数组

另一种方法是将数据作为CLOB或VARCHAR之类由字符分隔的对象传递,然后在存储过程中对其进行解析

INSERT INTO TABLE_NAME
(COLUMN1
,COLUMN2
,COLUMN3
,COLUMN4
,COLUMN5)
VALUES
(VALUE1
,VALUE2
,VALUE3
,VALUE4
,VALUE5)
FOR  WS-SUB   ROWS
ATOMIC
默认情况下,DB2存储过程不会在返回时提交,因此另一个选项是迭代COBOL表并重复调用存储过程