请选择 进入手机版 | 继续访问电脑版

赵耀的知识库

 找回密码
 立即注册
搜索
热搜: 报盘 状态 失败
查看: 2613|回复: 0

mysql DELIMITER 使用注意

[复制链接]

375

主题

381

帖子

2330

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2330
发表于 2019-2-27 15:56:29 | 显示全部楼层 |阅读模式
在mysql的sql脚本中,创建函数或多行sql时通常用到DELIMITER 关键字。示例:
        DROP FUNCTION IF EXISTS localserial;

        DELIMITER //  
        create function localserial(name varchar(50))   
        returns bigint     
        begin   
        declare _cur int;  
        declare _maxvalue int;   
        declare _increment int;
        declare _localserial bigint ;
        set _increment = (select incrementval from tb_sequence where seqname = name);  
        set _maxvalue = (select maxvalues from tb_sequence where seqname = name);  
        set _cur = (select currentval from tb_sequence where seqname = name);   
        set _localserial = CONCAT(DATE_FORMAT(CURDATE(),'%Y%m%d'),lpad(_cur,8,'0'));
        update tb_sequence  set currentval = _cur + incrementval where seqname = name ;   
        if(_cur + _increment >= _maxvalue) then  
                  update tb_sequence set currentval = minvalues where seqname = name ;  
        end if;  
        return _localserial;   
        end;   
        //  
        DELIMITER ;

该关键字使用注意事项:
此脚本中DELIMITER指定的分隔符为//,当然也可以用&&等字符。

需要注意的是在指定的分隔符//之后不能有空格。否则可能会出问题。
两个//后面的空格都要删掉,如图中黄色部分。
不然会导致后面的sql脚本可能会执行出错。
特别注意:
一旦因为DELIMITER后面的标识符后又空格导致问题。必须退出mysql连接,重新登录。
否则刷脚本还是报错,系统中的间隔符已经紊乱了,重新登录mysql再刷脚本才行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则