create procedure proc()
begin
    declare var integer(15);
end
这段代码开始是在linux下运行(ubuntu9.04 + mysql 5.1.31)没有问题,但是后来移到windows下(windows xp + mysql 5.1.39)就出问题了,错误消息如下:
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 'end' at line 1.把declare语句去掉后,后面的语句都能被mysql正常解释。多次实验,发现windows版本下的mysql的存储过程似乎不支持declare语句,遇到declare就报错。这不应该啊,都5.1了,而且同版本号的linux版都能正常解释。哪位仁兄能解释一下呢?

解决方案 »

  1.   

    不会吧,5。X支持SPDELIMITER $$
    CREATE PROCEDURE proc()
    BEGIN
    DECLARE var INTEGER(15);    END$$DELIMITER ;
      

  2.   

    windows 下的测试没有任何问题。mysql> delimiter //
    mysql> create procedure proc()
        -> begin
        ->     declare var integer(15);
        -> end
        -> //
    Query OK, 0 rows affected (0.34 sec)mysql> select version()//
    +----------------------+
    | version()            |
    +----------------------+
    | 5.1.33-community-log |
    +----------------------+
    1 row in set (0.05 sec)mysql>
      

  3.   

    我的怎么不报错啊!windowsmysql> delimiter //
    mysql> create procedure proc()
        -> begin
        ->    declare var integer(15);
        -> end
        -> //
    Query OK, 0 rows affected (0.02 sec)
      

  4.   

    不会啊mysql> delimiter //
    mysql> create procedure proc()
        -> begin
        ->     declare var integer(15);
        -> end
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql> call proc();
        -> //
    Query OK, 0 rows affected (0.02 sec)mysql> select version();
        -> //
    +------------------+
    | version()        |
    +------------------+
    | 5.1.34-community |
    +------------------+
    1 row in set (0.00 sec)mysql>
      

  5.   

    mysql> delimiter //
    mysql> create procedure proc()
        -> begin
        -> declare var integer(15);
        -> end
        -> //
    Query OK, 0 rows affected (0.05 sec)
    我的也没问题
      

  6.   

    加入 DELIMITER 就OK了。看下手册以及LS几位的解答。
      

  7.   

    的确是delimiter的问题。
    不好意思,献丑了……