|
在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再刷脚本才行。
|
|