Erro ao declarar a variável inteira dentro da função armazenada do MySQL

Estou recebendo um erro ao tentar declarar uma nova função armazenada no MySQL (versão do servidor: 5.5.13)

Basicamente, eu tenho uma tabela grande que classifica as strings dependendo de como elas começam. Minha função recebe uma string (da entrada do usuário) e, em seguida, informa a classificação dessa string pesquisando no banco de dados a classificação. É um pouco como uma consulta LIKE, exceto em sentido inverso, pois é a entrada do usuário que contém a string completa e o banco de dados contém a string sendo pesquisada. Espero que isso faça sentido!

O conceito e a lógica por trás dele funcionam bem enquanto eu escrevi / desenvolvi isso em PHP e funciona lindamente, no entanto, ao tentar traduzir isso em uma função armazenada, estou recebendo um erro do MySQL. O código da função é:

delimiter $

DROP FUNCTION IF EXISTS get_string_class$
CREATE FUNCTION get_string_class(mystring VARCHAR(15))

RETURNS VARCHAR(15)
READS SQL DATA
BEGIN

DECLARE i INT;
SET i = 2;

DECLARE mystringlength INT;
SET mystringlength = LENGTH(mystring);

DECLARE segment VARCHAR(15);
DECLARE String_Class VARCHAR(15);
SET String_Class = NULL;

WHILE i <= mystringlength DO

   SET segment = LEFT(mystring, i);

   SET String_Class = (SELECT String_Class FROM string_class_list WHERE String_Begins = segment);

   IF SELECT FOUND_ROWS() = 1 THEN
      RETURN String_Class
   END IF;

   i = i + 1;

END WHILE;

RETURN String_Class;

END$
delimiter ;

Estou recebendo este erro:

#1064 - You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near 
'DECLARE mystringlength INT; SET mystringlength = LENGTH(mystring);
DECLARE segm' at line 10 

Eu já fiz muitas coisas para tentar descobrir onde estou indo errado. Eu até tirei o loop completamente para testá-lo, mas ainda recebo o mesmo erro. Alguém sabe o que eu fiz de errado quando declarar essa variável INT? É provavelmente algo incrivelmente básico ...!

Muito obrigado antecipadamente.

questionAnswers(2)

yourAnswerToTheQuestion