【MySQL】1064 – You have an error in your SQL syntax;
MySQL用的不多,由于工作需要,需要在MySQL5.5上创建一个存储过程,在创建的过程中,报如下错误:
1 2 3 4 5 6 7 |
…… 1064 - 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 ') BEGIN DECLARE v_tabname VARCHAR(50); DECLARE v_batchno VARCHAR(50); DEC' at line 1 mysql> |
看着上面的错误,感觉是代码中第一行代码的问题,可是第一行就是变量的定义。怎么看也看不出问题,代码如下:
1 2 3 4 5 6 7 8 9 |
mysql> DELIMITER ;; CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in p_batchno varchar) BEGIN DECLARE v_tabname VARCHAR(50); DECLARE v_batchno VARCHAR(50); DECLARE v_spname VARCHAR(50) DEFAULT 'sp_ins_dire'; set @v_batchno = p_batchno; ……后面代码略…… |
本人对Oracle的存储过程较熟悉,对MySQL的存储过程实在是不熟悉,勉强凑合能写上,但是今儿遇到的问题,比较不好定位,总感觉没什么错误,但就是创建失败。
检查了好半天,最后查MySQL创建带参数存储过程语法时才发现,参数的数据类型必须要指定长度(这里说明一下,Oracle的存储过程是不需要的,只需要指定类型就可以了)。修改了过程,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mysql> DELIMITER ;; CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in p_batchno varchar(20)) BEGIN DECLARE v_tabname VARCHAR(50); DECLARE v_batchno VARCHAR(50); DECLARE v_spname VARCHAR(50) DEFAULT 'sp_ins_dire'; set @v_batchno = p_batchno; ……略…… END ;; DELIMITER ; Query OK, 0 rows affected mysql> |
问题解决了。