在linux下执行mysql脚本文件,内容是创建一个FUNCTION,总是报错,请大神帮忙看下原因是什么?多谢

sinat_34736483 2016-06-02 05:25:18
linux下装的是mysql客户端,server是另一台服务器,做如下操作,总是报错,请大家帮忙看看什么原因?多谢
(关键是这个脚本我用navicat工具执行就没有问题,说明脚本身没有语法问题。)

root@ubuntu:/home# /usr/bin/mysql -h10.43.82.204 -uroot -ppassword -Dtest < /home/tabledata.sql
ERROR 1064 (42000) at line 2: 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



tabledata.sql文件内容是:
DROP FUNCTION IF EXISTS PROC_GETSYNLIC;
CREATE FUNCTION PROC_GETSYNLIC(FTTBLNAME VARCHAR(50))
RETURNS VARCHAR(2000)
BEGIN
DECLARE SYNSTR VARCHAR(2000);
DECLARE VFIELD VARCHAR(50);
DECLARE VVALUE NUMERIC(10);
DECLARE DONE INT DEFAULT 0;

DECLARE CUR CURSOR FOR SELECT DISTINCT B.FIELD, C.CURVAL FROM CN_R_MANAGEDELEMENT A, CN_R_UMACLICENSELIB B, CN_R_UMACLICENSE C WHERE A.MANAGEDELEMENTTYPE = B.NETYPE AND B.LICID=C.LICID AND B.FTTBL=FTTBLNAME;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE=1;

SET SYNSTR='';
OPEN CUR;
FETCH CUR INTO VFIELD, VVALUE;
WHILE DONE <>1 DO
SET SYNSTR = CONCAT(SYNSTR,'&',VFIELD,'-',VVALUE);
FETCH CUR INTO VFIELD, VVALUE;
END WHILE;
CLOSE CUR;
SET SYNSTR = SUBSTRING(SYNSTR FROM 2 FOR CHAR_LENGTH(SYNSTR));
RETURN SYNSTR;
END;
...全文
333 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_34736483 2016-06-03
  • 打赏
  • 举报
回复
多谢楼上斑竹,问题解决
ACMAIN_CHM 2016-06-02
  • 打赏
  • 举报
回复
DROP FUNCTION IF EXISTS PROC_GETSYNLIC; delimiter // CREATE FUNCTION PROC_GETSYNLIC(FTTBLNAME VARCHAR(50)) RETURNS VARCHAR(2000) BEGIN DECLARE SYNSTR VARCHAR(2000); DECLARE VFIELD VARCHAR(50); DECLARE VVALUE NUMERIC(10); DECLARE DONE INT DEFAULT 0; DECLARE CUR CURSOR FOR SELECT DISTINCT B.FIELD, C.CURVAL FROM CN_R_MANAGEDELEMENT A, CN_R_UMACLICENSELIB B, CN_R_UMACLICENSE C WHERE A.MANAGEDELEMENTTYPE = B.NETYPE AND B.LICID=C.LICID AND B.FTTBL=FTTBLNAME; DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE=1; SET SYNSTR=''; OPEN CUR; FETCH CUR INTO VFIELD, VVALUE; WHILE DONE <>1 DO SET SYNSTR = CONCAT(SYNSTR,'&',VFIELD,'-',VVALUE); FETCH CUR INTO VFIELD, VVALUE; END WHILE; CLOSE CUR; SET SYNSTR = SUBSTRING(SYNSTR FROM 2 FOR CHAR_LENGTH(SYNSTR)); RETURN SYNSTR; END; //

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧