navicat不能创建函数解决方法分享
第一次写MySQLFUNCTION,一直报错,
Err]1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'`company_id`int)RETURNSvarchar(20)CHARSETutf8
BEGIN
本来的函数:
CREATEDEFINER=`33323`@`%`FUNCTION`createSaleCode`(`benginStr`varchar,`company_id`int)RETURNSvarchar(20)CHARSETutf8 BEGIN DECLAREnearnumVARCHAR(20); DECLAREnowdatepreVARCHAR(20); DECLAREnumoutVARCHAR(20); SELECTa.sale_codeINTOnearnumFROMd_saleaWHEREa.company_id=company_idORDERBYa.sale_idDESClimit1; SELECTconcat(extract(year_monthfromnow()),LPAD(extract(dayfromnow()),2,0))INTOnowdatepre; IFlocate(nowdatepre,nearnum)>0 THEN setnumout=nearnum+1; ELSE setnumout=concat(beginStr,nowdatepre,'00001'); ENDIF; RETURNnumout; END
这段函数在Navicat上边执行不起来,在多次尝试之后将代码修改为以下:
delimiter$$ CREATEDEFINER=`12212`@`%`FUNCTIONcreateSaleCode(benginStrvarchar(20),company_idint(11))RETURNSvarchar(20)CHARSETutf8 BEGIN DECLAREnearnumVARCHAR(20); DECLAREnowdatepreVARCHAR(20); DECLAREnumoutVARCHAR(20); SELECTa.sale_codeINTOnearnumFROMd_saleaWHEREa.company_id=company_idORDERBYa.sale_idDESClimit1; SELECTconcat(extract(year_monthfromnow()),LPAD(extract(dayfromnow()),2,0))INTOnowdatepre; IFlocate(nowdatepre,nearnum)>0 THEN setnumout=nearnum+1; ELSE setnumout=concat(beginStr,nowdatepre,'00001'); ENDIF; RETURNnumout; END$$ delimiter;
问题解决。
默认情况下,delimiter是分号;。
以上就是本文关于navicat不能创建函数解决方法分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:简述Redis和MySQL的区别、MYSQL子查询和嵌套查询优化实例解析、几个比较重要的MySQL变量等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!