sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo pasar una lista de cadenas en el procedimiento almacenado de MySQL?

Tu amigo aquí es FIND_IN_SET, espero. Encontré ese método por primera vez en esta pregunta:también cubierto en esta pregunta -string-as-variable-input">MYSQL - Procedimiento almacenado que utiliza cadenas separadas por comas como entrada variable

La documentación de MySQL para FIND_IN_SET está aquí http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Entonces su procedimiento será

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `search_equipment`(
    IN equip VARCHAR(100), 
    IN category VARCHAR(255)
)
BEGIN
    SELECT *
    FROM Equipment
    WHERE e_description LIKE CONCAT("%",equip,"%")
    AND FIND_IN_SET(e_type,category)
END

Esto se basa en que la cadena de categoría es una lista delimitada por comas, por lo que su código de llamada se convierte en

String type = "I.T. Equipment,Office Supply";

CALL search_equipment('some equipment', type);

(p.d. arregló un error tipográfico, en sus argumentos había escrito categoría)