Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment exécuter une requête qui est stockée dans une colonne de table MySQL ?

Vous pouvez utiliser un curseur pour obtenir chaque REPORT_QUERY sur CT table et exécutez-la à l'aide d'instructions préparées :

delimiter $$
drop procedure if exists run_queries$$
create procedure run_queries()
begin

    declare s_query varchar(255);

    declare done bool default false;
    declare c_queries cursor for    
        select REPORT_QUERY from CT;
    declare continue handler for not found set done = true;


    open c_queries;
    read_loop: loop

        fetch c_queries into s_query;
        if done then 
            leave read_loop;
        end if;

        -- run the query
        set @sql = s_query;
        prepare stmt from  @sql;
        execute stmt;
        deallocate prepare stmt;
    end loop;

end$$

Après la procédure de création, vous pouvez appeler comme ci-dessous :

appeler run_queries();

C'est tout.