mysql导入.sql文件的问题

将一个.sql文件编辑,文本中最后加入下面这段代码(部分代码)后,导入这个sql文件就会报错(这段新加代码未能导入)
原因是什么?还有就是应该如何解决这个问题。多谢了!

 #
# Function "fun_getChildList"
#

DROP FUNCTION IF EXISTS `fun_getChildList`;
CREATE FUNCTION `fun_getChildList`(`type` int,`areaid` int,`orgid` int) RETURNS varchar(1000) CHARSET utf8
BEGIN


    DECLARE sTemp VARCHAR(1000);
    DECLARE xh VARCHAR(50);
    DECLARE areacode VARCHAR(100);
    DECLARE cunt INT;

    SELECT CONCAT(ORGXH,'%') INTO xh from ss_organization where ID_ORG=orgid;
    IF type=1 THEN
        set sTemp='$';
        SELECT CONCAT(sTemp,',',GROUP_CONCAT(ID_ORG)) INTO sTemp from ss_organization where ORGXH like xh;
    ELSEIF type=0 THEN
        SELECT COUNT(1) into cunt FROM ss_organization where ss_organization.ID_ORG=orgid and ss_organization.ORG_DISTRPARENTID=areaid;
        if cunt>0 then
        select area_code INTO areacode from bs_distrarea_info where area_id=areaid;
        SELECT IFNULL(GROUP_CONCAT(ID_ORG),'0') into sTemp from ss_organization 
        LEFT JOIN  bs_distrarea_info ON ORG_DISTRPARENTID=area_id where area_code like CONCAT(areacode,'%') and area_id<>areaid;
        SELECT CONCAT(sTemp,',',IFNULL(GROUP_CONCAT(ID_ORG),'0')) INTO sTemp from ss_organization where ORGXH like xh;
        ELSEIF cunt=0 THEN
        SELECT IFNULL(GROUP_CONCAT(ID_ORG),'0') into sTemp from ss_organization where ss_organization.ORG_DISTRPARENTID=areaid;
        end IF;
        SET sTemp=CONCAT('$',',',sTemp);
    END IF;
    RETURN sTemp;
END;

#
# Function "fun_getOrgLine"
#

DROP FUNCTION IF EXISTS `fun_getOrgLine`;
CREATE FUNCTION `fun_getOrgLine`(`orgid` int) RETURNS varchar(1000) CHARSET utf8
BEGIN

    DECLARE sTemp VARCHAR(1000);
    DECLARE sTempChd VARCHAR(1000);
    DECLARE grade INT;
    DECLARE enterprisename VARCHAR(100);
    DECLARE st INT;

    SELECT ss_organization.ORG_GRADE,ss_organization.ENTERPRISE_NAME into grade,enterprisename from ss_organization where ss_organization.ID_ORG=orgid;
    SET st=1;
     WHILE grade<=st DO
        set st=st+1;
     END WHILE;

    RETURN grade;
END;

#
# Function "getChildLst"
#

DROP FUNCTION IF EXISTS `getChildLst`;
CREATE FUNCTION `getChildLst`(rootId INT) RETURNS varchar(1000) CHARSET utf8
BEGIN
     DECLARE sTemp VARCHAR(1000);
       DECLARE sTempChd VARCHAR(1000);

       SET sTemp = '$';
       SET sTempChd =cast(rootId as CHAR);

       WHILE sTempChd is not null DO
         SET sTemp = concat(sTemp,',',sTempChd);
         SELECT group_concat(o.ID_ORG) INTO sTempChd FROM ss_organization o where FIND_IN_SET(o.ORG_PARENT_ID,sTempChd)>0;
       END WHILE;
    RETURN sTemp;
END;



4个回答

如果你的函数本身没有语病,那么很可能是识别结尾符有问题,因为mysql默认;结尾,所以你直接这样写会导致执行失败,你在这些函数执行前加上
DELIMITER $

使用完后,也即在没有存储过程或者函数的时候再还原回来

DELIMITER ;


你这是存储过程,单独执行就行

这个是存储过程,你要加一些信息,看是执行什么语句的时候出错了。

glzmzd
glzmzd 每个部分单独用sql编辑器跑了一次。。都没有问题。。mysqlfront的sql编辑器好像没法一次运行太多条sql语句,应该再怎么测试好?。。
4 年多之前 回复
glzmzd
glzmzd 每个部分单独用sql编辑器跑了一次。。都没有问题。。mysqlfront的sql编辑器好像没法一次运行太多条sql语句,应该再怎么测试好?。。
4 年多之前 回复
glzmzd
glzmzd 好主意。。那我应该怎么加能够在出错的时候告诉我哪里出错的信息?
4 年多之前 回复

一.MySQL的命令行模式的设置:

桌面->我的电脑->属性->环境变量->新建->

PATH=“;path\MySQL\bin;”其中path为MySQL的安装路径。

二.简单的介绍一下命令行进入MySQL的方法:

1.C:>MySQL -h hostname -u username -p

按ENTER键,等待然后输入密码。这里hostname为服务器的名称,如l......
答案就在这里:关于mysql导入sql文件的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐