我对存储过程相当陌生。我必须为 ATOMIC 插入(批量插入(设计一个存储过程。我正在使用 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 存储过程中执行原子插入。
提前谢谢。
遵循 z/OS 12.0.0 上的 DB2 文档:
可以将 DB2 存储过程配置为使用数组作为参数类型,请参阅在 SQL 过程中使用数组的示例。
但是,如果您打算从 COBOL 调用它,您可能会遇到问题,因为 COBOL 嵌入式 SQL 应用程序中支持的 SQL 数据类型的文档指出:
COBOL 预编译器不支持数组
另一种方法是将数据作为由字符分隔的 CLOB 或 VARCHAR 之类的东西传递,然后在存储过程中对其进行分析。
缺省情况下,DB2 存储过程不会在返回时提交,因此另一种选择是迭代 COBOL 表并重复调用存储过程。