6
votes

Comment utiliser où dans la procédure stockée de MySQL

Comment puis-je passer un tableau et utiliser où dans la procédure stockée intérieure?

Doit-je concaténer la chaîne d'entrée ou quelque chose? p>

disons P>

DELIMITER $$
DROP PROCEDURE IF EXISTS `abc`.`table1`$$
CREATE PROCEDURE  `abc`.`test`
(IN somestring VARCHAR(255))
BEGIN
    SELECT * FROM abc.table1 
    WHERE flight_type IN somestring
END $$
DELIMITER ;


0 commentaires

4 Réponses :


0
votes

Ceci devrait fonctionner aussi longtemps que SAOMESPRING CODE> est du formulaire

"(item1, item2, item3, ... )"


0 commentaires

2
votes

Vous pouvez utiliser wind_in_set () si selstring est formaté a, b, c, d : xxx


1 commentaires

Qu'en est-il de wind_in_set optimisation? Utilise-t-il des index?



4
votes

Vous pouvez utiliser la concaténation de chaîne et la déclaration de préparation pour exécuter des requêtes construites dynamiquement.

sulsing doit être construit dans un format SQL valide comme '1', '2', '3' xxx


0 commentaires

0
votes

La réponse acceptée a besoin de modification pour travailler avec ma version de Mariadb.

L'instruction Concat a manqué un point-virgule, l'instruction Exécute a été appelée @s (une variable) plutôt que StMT (une déclaration), et la partie goutte / création était déroutante. Voici ma réécriture: xxx


0 commentaires