Ошибка объявления целочисленной переменной в хранимой функции MySQL
Я получаю сообщение об ошибке при попытке объявить новую сохраненную функцию в MySQL (версия сервера: 5.5.13)
По сути, у меня есть большая таблица, которая классифицирует строки в зависимости от того, как они начинаются. Моя функция берет строку (из пользовательского ввода), а затем сообщает вам классификацию этой строки путем поиска классификации в базе данных. Это немного похоже на запрос LIKE, за исключением обратного, поскольку это пользовательский ввод, который содержит полную строку, а база данных содержит искомую строку. Надеюсь, что это имеет смысл!
Концепция и логика, лежащие в ее основе, прекрасно работают, поскольку я написал / разработал это на PHP, и это прекрасно работает, однако при попытке преобразовать это в хранимую функцию я получаю ошибку от MySQL. Код функции:
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 ;
Я получаю эту ошибку:
#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
Я много играл, пытаясь понять, где я ошибаюсь. Я даже полностью удалил цикл, чтобы проверить его, но все равно получаю ту же ошибку. Кто-нибудь знает, что я сделал неправильно, когда объявил эту переменную INT? Это, наверное, что-то невероятно простое ...!
Большое спасибо заранее.