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版都能正常解释。哪位仁兄能解释一下呢?
解决方案 »
- 建立mysql集群时,选择簇,还是heartbeat的方式?谁能帮忙介绍一下两种到底用在什么情况中吗?
- mysql服务无法启动
- 请教一个查询并分类的语句
- 如何执行字串中的SQL语句
- mysql中能在C程序中通过嵌入式SQL(Embedded SQL)访问数据库么?
- 这个连接MySQL数据库的字符串有什么问题?有人知道吗?
- MySQL如何实现全文检索
- 谁有mysql control center的帮助文档。为什么我安装后没有找到它的帮助?
- java程序在windows中和linux中group_concat()查询结果不同,linux中会出现乱码
- 三层数据结构,如何实现更新
- MySQL取字节函数
- select效率问题
CREATE PROCEDURE proc()
BEGIN
DECLARE var INTEGER(15); END$$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>
mysql> create procedure proc()
-> begin
-> declare var integer(15);
-> end
-> //
Query OK, 0 rows affected (0.02 sec)
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>
mysql> create procedure proc()
-> begin
-> declare var integer(15);
-> end
-> //
Query OK, 0 rows affected (0.05 sec)
我的也没问题
不好意思,献丑了……