Mysql
 sql >> Database >  >> RDS >> Mysql

Come passare un elenco di stringhe nella stored procedure MySQL?

Il tuo amico qui è FIND_IN_SET, mi aspetto. Mi sono imbattuto per la prima volta in questo metodo in questa domanda:trattato anche in questa domanda MYSQL - Stored procedure che utilizza una stringa separata da virgole come input variabile

La documentazione MySQL per FIND_IN_SET è qui http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

Quindi la tua procedura diventerà

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

Ciò si basa sul fatto che la stringa di categoria è un elenco delimitato da virgole, quindi il tuo codice di chiamata diventa

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

CALL search_equipment('some equipment', type);

(p.s. corretto un errore di battitura, nei tuoi argomenti avevi digitato categoria)