【发布时间】:2014-12-02 10:04:44
【问题描述】:
我正在尝试创建一个将数组作为参数的存储过程,并在 WHILE 循环中遍历该数组并将字符添加到表中。
例如,如果我有一个 ['a','b','c'] 数组,我想将它传递到我的存储过程中,并且字符 'a' 、 'b' 和 'c' 是放在一张桌子上。
我的 SP 创建成功,但是当我尝试调用我的程序时遇到问题。谁能指出我如何传递数组?我的程序如下......
DROP PROCEDURE DB.LWRH_DYNAMIC_SP@
create type stringArray as VARCHAR(100) array[100]@
CREATE PROCEDURE DB.LWRH_SP
(
IN list stringArray
)
LANGUAGE SQL
BEGIN
DECLARE i, MAX INTEGER;
DECLARE c CHAR(1);
SET i = 0;
SET MAX = CARDINALITY(list);
WHILE i <= MAX DO
SET c = list[i];
INSERT INTO schema.test ("SERVICE TYPE")values (c);
END WHILE;
END@
CALL DB.LWRH_SP('')@
【问题讨论】:
-
@ChestNoot - 这是 DB2,它是一个完全不同的产品。诸如对数组参数的支持之类的东西参差不齐。
-
@ChestNoot 我正在使用 DB2,我只想使用 SQL 调用该过程。我不涉及 C、Java 或任何其他语言。所以,我不认为这是重复的。
-
我已经设法找到解决这个问题的方法。我使用 VARCHAR 作为输入参数并遍历每个 CHAR。但是,仍然会感谢您的回答。谢谢。
标签: sql stored-procedures db2