Я пытаюсь сделать простой тест для цикла while в хранимой процедуре из этого учебника Я столкнулся с этой ошибкой

 Unknown Column cnt  in 'field list' 

Вот зп, может кто поможет?

DELIMITER $$

CREATE PROCEDURE `WhileLoopProc` ()

BEGIN

    DECLARE cnt INT DEFAULT 1;

    DECLARE str VARCHAR(255) DEFAULT '';

    WHILE cnt  <  10 DO

       SET str = CONCAT(str,cnt,',');

       set cnt = cnt + 1 ;

    END WHILE;
SELECT str;

END $$
DELIMITER ;
1
palAlaa 17 Мар 2013 в 12:50
1
Но он работает нормально здесь ?
 – 
Mahmoud Gamal
17 Мар 2013 в 12:57
Ммм, у меня была версия MySQL 5.5.16, как вы думаете, проблема с версиями?
 – 
palAlaa
17 Мар 2013 в 12:59
Как вы называете процедуру?
 – 
eggyal
17 Мар 2013 в 13:02
Вызовите test.WhileLoopProc (), потому что я запускаю его внутри тестовой схемы
 – 
palAlaa
17 Мар 2013 в 13:04
Та же проблема с повторением до примера!
 – 
palAlaa
17 Мар 2013 в 13:29

1 ответ

Лучший ответ

У вас есть непрерывный пробел (U + 00A0) сразу после имени переменной в следующей строке:

    WHILE cnt  <  10 DO
             ^--- this is U+00A0

MySQL не распознает такие символы как пробелы, а скорее как часть имени переменной.

2
eggyal 17 Мар 2013 в 18:52
Невероятная проблема и невероятное решение проблем. Спасибо миллион
 – 
palAlaa
18 Мар 2013 в 14:36