存储过程中的原子插入

ATOMIC INSERT in STORED PROCEDURE

我对存储过程还很陌生。我必须为原子插入(批量插入)设计一个存储过程。我正在使用 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 存储过程中执行 ATOMIC 插入。

提前致谢。

遵循 z/OS 12.0.0 上的 DB2 文档:

DB2 存储过程可以配置为使用数组作为参数类型,请参阅 Example of using arrays in an SQL procedure

但是,如果您打算从 COBOL 调用它,您可能 运行 会遇到问题,如 Supported SQL data types in COBOL embedded SQL applications 的文档所示:

Arrays are not supported by the COBOL precompiler

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

默认情况下,DB2 存储过程不会在 return 上提交,因此另一种选择是迭代 COBOL 表并重复调用存储过程。