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

MySql 码拜 8年前 (2016-02-05) 1416次浏览
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;
解决方案

40

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;
//

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在linux下执行mysql脚本文件,内容是创建一个FUNCTION,总是报错,请帮看下原因是什么?多谢
喜欢 (0)
[1034331897@qq.com]
分享 (0)