Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como ter SQL dinâmico no procedimento armazenado do MySQL


Após 5.0.13, em procedimentos armazenados, você pode usar SQL dinâmico:
delimiter // 
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
    SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
    PREPARE stmt FROM @s;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END
//
delimiter ;

SQL dinâmico não funciona em funções ou gatilhos. Consulte a documentação do MySQL para mais usos.