我有一个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);
未按预期工作。如何在存储过程中连接字符串?
答案 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;