Usare la clausola IN in una Stored Procedure in MySQL

Mattepuffo's logo
Usare la clausola IN in una Stored Procedure in MySQL

Usare la clausola IN in una Stored Procedure in MySQL

La clausola IN, in una query con vari filtri, può essere molto comoda.

Ma se la vogliamo usare dentro una Stored Procedure in MySQL, può essere problematico passare i valori da usare nella clausola.

Per farlo siamo costretti a concatenare la query usando CONCAT.

Vediamo un esempio:

DELIMITER //
CREATE PROCEDURE sp_query_in(IN valori VARCHAR(255))
    NO SQL
BEGIN
    SET @query = CONCAT('SELECT * FROM tabella WHERE campo IN (', valori, ')');
    PREPARE comando FROM @query;
    EXECUTE comando;
    DEALLOCATE PREPARE comando;
END

Come vedete i valori li prendiamo con un parametro di tipo VARCHAR, in modo da poterli concatenare.

Questo anche se i parametri, presi singolarmente, sono numeri e non stringhe.

Usiamo CONCAT per concatenare tutta la query e i valori.

Dopo di che prepariamo (PREPARE), eseguiamo (EXECUTE) e deallochiamo (DEALLOCATE) il comando.

Enjoy!


Condividi

Commentami!