2014-01-20 3 views
1

Я хочу добавить сцепленное значение в переменную params в процедуре mysql. Но mysql говорит, что имеет синтаксическую ошибку. Какова синтаксическая ошибка, которую я здесь делаю?Ошибка синтаксиса MYSQL Concat()?

SET parms =CONCAT('s','sa'); 

DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE; 

Mysql жалуется, что ошибка указана во 2-й строке. Но я думаю, что я делаю что-то неправильно в 1-й строке.

ответ

3

Ваша проблема в том, что вы положили DECLARE не в том месте.

DECLARE Syntax
DECLARE разрешается только внутри BEGIN ... END соединение заявления и должны быть его начала, прежде чем любые другие заявления.

Более декларациях должны следовать в определенном порядке:

  1. переменные и условия
  2. курсоры
  3. обработчики

Это, как говорится, это будет делать только штрафом

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) 
Смежные вопросы