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.