最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

navicat不能创建函数解决方法分享

来源:动视网 责编:小采 时间:2020-11-09 20:29:41
文档

navicat不能创建函数解决方法分享

navicat不能创建函数解决方法分享:第一次写MySQL FUNCTION,一直报错, Err] 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 '`c
推荐度:
导读navicat不能创建函数解决方法分享:第一次写MySQL FUNCTION,一直报错, Err] 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 '`c


第一次写MySQL FUNCTION,一直报错,

Err] 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 '`company_id` int) RETURNS varchar(20) CHARSET utf8

BEGIN

本来的函数:

CREATE DEFINER=`33323`@`%` FUNCTION `createSaleCode`(`benginStr` varchar,`company_id` int) RETURNS varchar(20) CHARSET utf8 
BEGIN 
 DECLARE nearnum VARCHAR(20); 
 DECLARE nowdatepre VARCHAR(20); 
 DECLARE numout VARCHAR(20); 
 SELECT a.sale_code INTO nearnum FROM d_sale a WHERE a.company_id = company_id ORDER BY a.sale_id DESC limit 1; 
 SELECT concat(extract(year_month from now()),LPAD(extract(day from now()), 2, 0)) INTO nowdatepre; 
 IF locate(nowdatepre,nearnum)>0 
 THEN 
 set numout = nearnum +1; 
 ELSE 
 set numout = concat(beginStr,nowdatepre,'00001'); 
 END IF; 
 RETURN numout; 
END 

这段函数在Navicat上边执行不起来,在多次尝试之后将代码修改为以下:

delimiter $$ 
CREATE DEFINER=`12212`@`%` FUNCTION createSaleCode(benginStr varchar(20),company_id int(11) ) RETURNS varchar(20) CHARSET utf8 
BEGIN 
 DECLARE nearnum VARCHAR(20); 
 DECLARE nowdatepre VARCHAR(20); 
 DECLARE numout VARCHAR(20); 
 SELECT a.sale_code INTO nearnum FROM d_sale a WHERE a.company_id = company_id ORDER BY a.sale_id DESC limit 1; 
 SELECT concat(extract(year_month from now()),LPAD(extract(day from now()), 2, 0)) INTO nowdatepre; 
 IF locate(nowdatepre,nearnum)>0 
 THEN 
 set numout = nearnum +1; 
 ELSE 
 set numout = concat(beginStr,nowdatepre,'00001'); 
 END IF; 
 RETURN numout; 
END$$ 
delimiter ; 

问题解决。

默认情况下,delimiter是分号;。

总结

文档

navicat不能创建函数解决方法分享

navicat不能创建函数解决方法分享:第一次写MySQL FUNCTION,一直报错, Err] 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 '`c
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top