MySQL存储过程DELIMITER命令讲解

图片还没有哦

这篇文章主要描述了DELIMITER命令的作用

DELIMITER命令

DELIMITER是MySQL中的命令,这个命令与存储过程没什么关系
他的作用就是告诉MySQL解释器,该段命令是否已经结束了,MySQL是否可以执行了
默认情况下DELIMITER是分号; 在命令行客户端中,如果有一行命令以分号结束,那么MySQL将不会管分号后面的sql语法 因为MySQL语法一遇到分号就会自动执行(默认的DELIMITER是分号)
而我们在写sql存储过程的时候又不可能只有一条语句 所以这时候就要用到DELIMITER了
DELIMITER后面换成其它符号,如//或$$ 这样就不会一出现;就会立即执行sql语句了
下面我们看几个例子

DELIMITER $$
DROP TRIGGER IF EXISTS `updateegopriceondelete`$$
CREATE
    TRIGGER `updateegopriceondelete` AFTER  DELETE ON  `customerinfo`
    FOR EACH ROW BEGIN
DELETE FROM egoprice  WHERE customerId=OLD.customerId;
    END$$
DELIMITER ;

DELIMITER 定好结束符为”$$”, 然后最后又定义为”;”, MySQL的默认结束符为”;”.
说明我们DELIMITER再sql可以在开头或末尾随意修改的 这个就看自己的需求了

CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
    RETURNS varchar(255)
    BEGIN
        IF ISNULL(S) THEN
            RETURN '';
        ELSEIF N<15 THEN
            RETURN LEFT(S, N);
        ELSE
            IF CHAR_LENGTH(S) <=N THEN
                RETURN S;
            ELSE
                RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
            END IF;
        END IF;
    END;

默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
因为MySQL一遇到分号,它就要自动执行。
即,在语句RETURN ‘’;时,MySQL就开始执行了。
这种情况下,就需要事先把DELIMITER换成其它符号,如//或$

DELIMITER $$ 或 //
CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
    RETURNS varchar(255)
    BEGIN
        IF ISNULL(S) THEN
            RETURN '';
        ELSEIF N<15 THEN
            RETURN LEFT(S, N);
        ELSE
            IF CHAR_LENGTH(S) <=N THEN
                RETURN S;
            ELSE
                RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
            END IF;
        END IF;
    END;$$或//
DELIMITER ;(还原;)

这样只有当$$或//出现之后,MySQL解释器才会执行这段语句

注:DELIMITER 自定义结束符号 后面不要多加一个分号哦( ̄▽ ̄)~* DELIMITER $$; 用了DELIMITER 符号之后记得在最后还原哦 DELIMITER;

本文标题:MySQL存储过程DELIMITER命令讲解

文章作者:游戏人生

发布时间:2019年01月15日 - 19:01

最后更新:2020年12月27日 - 12:12

原始链接:http://www.tjl-myblog.cn/mysql存储过程DELIMITER命令讲解.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------