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

时间:2014-01-15 17:01:17

标签: 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 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

程序的一部分:     设置SEQVALUES = SEQVALUES || ','|| CHAR(SEQ_VAL);

未按预期工作。如何在存储过程中连接字符串?

1 个答案:

答案 0 :(得分:2)

您尚未告诉我们 它是“未按预期工作”。输入和输出示例很有用。

我的猜测是,因为你永远不会初始化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;