首先,大家需要定义一个集合类型的变量,可以使用MySQL的CREATE TYPE命令来定义。例如,下面的代码定义了一个名为id_list的集合类型,用于存储整数类型的ID:
CREATE TYPE id_list AS INTEGER ARRAY;
在存储过程中,可以声明一个输入参数,类型为定义的集合类型。例如,下面的代码定义了一个名为my_procedure的存储过程,输入参数为id_list类型:
DELIMITER // CREATE PROCEDURE my_procedure(IN ids id_list) BEGIN ... END // DELIMITER ;
在存储过程中,可以使用FOREACH循环来遍历集合中的每一个元素。例如,下面的代码在存储过程中遍历了传入的id_list:
DELIMITER // CREATE PROCEDURE my_procedure(IN ids id_list) BEGIN DECLARE i INTEGER DEFAULT 0; DECLARE n INTEGER DEFAULT 0; DECLARE id INTEGER DEFAULT 0; SET n = array_length(ids); WHILE i< n DO SET id = ids[i]; ... SET i = i + 1; END WHILE; END // DELIMITER ;
当要调用my_procedure存储过程并传入id_list参数时,可以使用类似下面的代码:
CALL my_procedure(ARRAY[1, 2, 3]);
在上面的代码中,大家直接传入了一个数组,MySQL会将其转换为定义的id_list类型。
总之,在MySQL中传入集合类型的数据,需要先定义一个集合类型的变量,并将其用作存储过程的输入参数。在存储过程中使用FOREACH循环来遍历集合中的每一个元素。在调用存储过程时,需要将传入的数组转换为集合类型。