天天看点

在mysql创建function时,报#1064#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

#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

在mysql创建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
           

我在执行以下脚本时,一直报上面那个错误,我一个字一个核对,都没什么毛病,还是报错。

-- 原版
CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE char_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
DECLARE return_str varchar(255) DEFAULT '' ;
DECLARE i INT DEFAULT 0;
WHILE i DO
SET return_str = concat(return_str,substring(char_str , FLOOR(1 + RAND()*62 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END; //
           

最后,我实在忍无可忍,手写一边,发现居然成功了,狗日的,这么坑的吗?

-- 手写版
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;
//
           

总结:

1、先检查sql有没有语法错误;

2、不要相信网上复制下来就一定能执行,能自己手撸一遍,最好手撸一遍;

3、常来我博客看看,有什么不懂可以留言,😄,大家一起学习,一起进步,不要偷偷学习哦!

继续阅读