MySQL में 5.5 से पहले, आप वैरिएबल को LIMIT
. में नहीं डाल सकते हैं MySQL संग्रहीत प्रक्रियाओं में खंड। आपको इसे एक स्ट्रिंग में प्रक्षेपित करना होगा और फिर स्ट्रिंग को एक गतिशील क्वेरी के रूप में निष्पादित करना होगा।
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;