sql >> Base de Datos >  >> RDS >> Mysql

Uso de variables como OFFSET en declaraciones SELECT dentro de las funciones almacenadas de mysql

En MySQL anterior a 5.5, no puede poner una variable en el LIMIT cláusula en los procedimientos almacenados de MySQL. Debe interpolarlo en una cadena y luego ejecutar la cadena como una consulta dinámica.

SET rand_offset = FLOOR(RAND() * (SELECT COUNT(*) FROM all_words));
SET @sql = CONCAT('SELECT word INTO str_rnd_word FROM all_words LIMIT 1 OFFSET ', rand_offset);
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;