1

我有一个 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|| ',' || 字符(SEQ_VAL);

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

4

1 回答 1

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;
于 2014-01-15T23:11:42.830 回答