# mysql 创建 function 错误 1064解决方案

- URL: https://wuming.si/blog/558/
- Author: Aaron
- Published: 2014-06-09
- Language: zh-Hans
- Categories: Technology
- Originally published at: https://blog.wo.ai/archives/558

在mysql5.1创建function时，总是报下面的错误

#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 ” at line 4

检查很多遍都没发现语法错误，苦恼很久。

后上网查到，是因为mysql分隔符的问题，默认是以;作为分隔符，而function或者procedure里面很多时候都要用分号，所以造成这个问题。

解决方法是用DELIMITER //预先定义分隔符，这样就解决了这个问题。存档以防将来之需。

如下是创建随机字符串的function

DELIMITER //

CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET utf8  
BEGIN  
DECLARE chars_str varchar(100) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’;  
DECLARE return_str varchar(255) DEFAULT ”;  
DECLARE i INT DEFAULT 0;  
WHILE i < n DO  
SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));  
SET i = i +1;  
END WHILE;  
RETURN return_str;  
END; //
