MYSQL Concat()语法错误?

时间:2014-01-20 04:42:25

标签: mysql

我想在mysql过程中为params变量添加连接值。但是mysql说它有语法错误。我在这里做的语法错误是什么?

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

DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE;

Mysql抱怨错误在第二行。但我认为我在第一行做错了。

1 个答案:

答案 0 :(得分:3)

您的问题是您将DECLARE放在错误的位置。

  

<强> DECLARE Syntax
  DECLARE只允许在BEGIN ... END复合语句中使用   并且必须在开始之前,在任何其他陈述之前

声明的更多内容必须遵循特定的顺序:

  1. 变量和条件
  2. 游标
  3. 处理程序
  4. 话虽如此,这样做会很好

    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)