Stored procedures DB2存储过程中的字符串连接

Stored procedures DB2存储过程中的字符串连接,stored-procedures,db2,db2-luw,Stored Procedures,Db2,Db2 Luw,我有一个DB2存储过程来获取n个序列值,然后将它们组合成一个逗号分隔的字符串并返回它。存储过程中的concat函数未按预期工作 CREATE PROCEDURE REFWTX.GET_SEQ_VALUES (in numb integer, OUT SEQVALUES VARCHAR(10000)) LANGUAGE SQL SPECIFIC GET_SEQ_VALUES BEGIN DECLARE SEQ_VAL Integer; DECLARE CUR_COUNT INTEGER; SET

我有一个DB2存储过程来获取n个序列值,然后将它们组合成一个逗号分隔的字符串并返回它。存储过程中的concat函数未按预期工作

CREATE PROCEDURE REFWTX.GET_SEQ_VALUES (in numb integer, OUT SEQVALUES VARCHAR(10000))
LANGUAGE SQL
SPECIFIC GET_SEQ_VALUES
BEGIN
DECLARE SEQ_VAL Integer;
DECLARE CUR_COUNT INTEGER;
SET CUR_COUNT=1;
WHILE (CUR_COUNT <= numb) DO
SELECT NEXTVAL FOR REFWTX.ACK_999_INTR_CTRL_NO_SEQ INTO SEQ_VAL FROM SYSIBM.SYSDUMMY1;
set SEQVALUES = SEQVALUES|| ',' || CHAR(SEQ_VAL);
SET CUR_COUNT=CUR_COUNT+1;
END WHILE;
return;
END
CREATE PROCEDURE REFWTX.GET_SEQ_值(in numb integer,OUT SEQVALUES VARCHAR(10000))
语言SQL
特定GET_SEQ_值
开始
声明SEQ_VAL整数;
声明CUR_COUNT整数;
设置CUR_COUNT=1;

虽然(CUR_COUNT您还没有告诉我们它“没有按预期工作”。示例输入和输出将非常有用

我的猜测是,由于您从不初始化SEQVALUES,因此它被设置为
NULL
,并将任何内容与
NULL
连接起来,就可以得到
NULL

而且,代替

SELECT NEXTVAL FOR REFWTX.ACK_999_INTR_CTRL_NO_SEQ INTO SEQ_VAL FROM SYSIBM.SYSDUMMY1;
为什么不使用

 VALUES NEXTVAL FOR REFWTX.ACK_999_INTR_CTRL_NO_SEQ INTO SEQ_VAL;

我希望除了显示这些信息之外,您不打算做任何事情,因为在SQL(特别是DB2)中使用逗号分隔的列表非常困难。事实上,我相信LUW有一些用于处理聚合此类信息的实用程序,因此您不必使用游标(应该更快)-.SEQVALUES是否始终设置为第一次尝试时设置的值?