Exécution de chaînes dans MySQL
L'une des tâches courantes en programmation est la capacité de générer et d'exécuter dynamiquement des requêtes SQL. Dans MySQL, cette fonctionnalité n'est pas aussi simple que dans d'autres langages comme SQL Server, qui fournit la commande EXEC à cet effet.
Problème :
Un utilisateur souhaite pour convertir une procédure stockée en MSSQL qui utilise un varchar comme requête. Cependant, EXEC et EXECUTE ne sont pas pris en charge dans MySQL, et CALL ne fonctionne pas non plus.
Solution :
Bien que MySQL n'ait pas d'équivalent exact de la fonction eval de JavaScript , il existe une solution de contournement utilisant une combinaison de SQL dynamique et de procédures stockées. Voici comment y parvenir :
Exemple :
L'extrait de code suivant illustre la solution :
SET @queryString = ( SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM ( SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 ) as qwe ) as www ); PREPARE stmt FROM @queryString; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @asd = NULL;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!