DB2存储过程批量插入后返回ID数组的技术问询
DB2批量插入并返回生成ID的单列结果集存储过程实现
要实现批量插入多条记录并返回所有生成ID的单列结果集,直接利用DB2的FINAL TABLE特性就能解决问题——它可以捕获所有插入操作生成的记录ID,再通过游标返回这些数据即可。以下是修改后的完整存储过程代码:
CREATE OR REPLACE PROCEDURE INSERT_ITEMS (IN JSON_VALUE_IN CLOB(16777216)) LANGUAGE SQL MODIFIES SQL DATA BEGIN -- 定义游标,直接返回FINAL TABLE中捕获的所有ID DECLARE C2 CURSOR WITH RETURN FOR SELECT EVENTID AS EVENTID FROM FINAL TABLE ( INSERT INTO ITEMS (TITLE) SELECT JSON_VAL(SYSTOOLS.JSON2BSON(ITEMS.value), 'title', 's:100') FROM TABLE( SYSTOOLS.JSON_TABLE(SYSTOOLS.JSON2BSON(JSON_VALUE_IN), 'items', 's:32000') ) ITEMS ); OPEN C2; END @
关键修改说明
- 移除了原代码中硬编码的
intEventId变量,直接通过FINAL TABLE获取插入操作生成的所有ID - 游标直接查询
FINAL TABLE的结果,这样就能返回所有新插入记录的ID,形成单列结果集 FINAL TABLE会捕获INSERT操作产生的所有新记录,完美适配批量插入的场景
调用这个存储过程后,你会得到一列名为EVENTID的结果集,每一行对应一条新插入记录的生成ID。
内容的提问来源于stack exchange,提问作者Patters
相关产品推荐
相关产品推荐

