Ваша проблема в том, что вы положили DECLARE
не в том месте.
DECLARE Syntax
DECLARE разрешается только внутри BEGIN ... END соединение заявления и должны быть его начала, прежде чем любые другие заявления.
Более декларациях должны следовать в определенном порядке:
- переменные и условия
- курсоры
- обработчики
Это, как говорится, это будет делать только штрафом
DECLARE parms VARCHAR(32);
DECLARE exit_loop INT;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE;
SET parms = CONCAT('s','sa');
Давайте попробуем:
mysql> DELIMITER //
mysql> CREATE PROCEDURE myproc()
-> BEGIN
-> DECLARE parms VARCHAR(32);
-> DECLARE exit_loop INT;
-> DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE;
->
-> SET parms = CONCAT('s','sa');
-> SELECT parms;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> CALL myproc();
+-------+
| parms |
+-------+
| ssa |
+-------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)