Mysql créer dynamiquement de la chaîne de requête dans une procédure stockée basé sur la logique

L'objectif est de modifier une chaîne de requête dans une base de données Mysql procédure stockée en fonction des variables d'entrée.

Quelque chose comme ceci:

CREATE DEFINER=`root`@`localhost` PROCEDURE `func`(type VARCHAR(15))
BEGIN
    SET @type = type;

    -- Check for the sort parameter
    if @type="asc" THEN
        SET @sort = " order by name asc";
    elseif @type="desc" THEN
        SET @sort = " order by name desc";
    else
        SET @sort ="";
    end if;

SELECT id, name from table @sort;

END    
La solution est d'utiliser exécuter, et concat: CRÉER DEFINER=root@localhost PROCÉDURE test(input de type VARCHAR(15)) BEGIN SET @input = entrée; si @input="asc" puis SET @tri = "commande par ActivityLogKey asc"; elseif @input = "desc" puis SET @tri = "commande par ActivityLogKey desc"; else SET @tri =""; fin si; SET @query = CONCAT('select * from activitylog ',@tri,'limit 0, 5'); PRÉPARER stmt DE @requête; EXECUTE stmt; DÉSALLOUER PRÉPARER stmt; FIN
Si c'est la solution pour laquelle vous n'avez pas l'ajouter comme une réponse et de l'accepter ou de le modifier à votre question avec elle.
Sans 100 points de réputation, je dois attendre 8 heures pour répondre à ma propre question
Puis attendre. La limitation n'a pas été mis en place parce que les devs veulent que vous postez votre réponse dans le mauvais endroit, il a été mis en place parce qu'ils veulent que vous attendez. Il y a des raisons pour cela.
De bons conseils. Je vous remercie.

OriginalL'auteur Ben Guthrie | 2011-12-18