delimiter 常应用在存储过程 函数中
其中DELIMITER 定好结束符为"$$", 然后最后又定义为";", MYSQL的默认结束符为";".
默认情况下,delimiter “;” 用于向 MySQL 提交查询语句。在存储过程中每个 SQL 语句的结尾都有个 “;”,如果这时候,每逢 “;” 就向 MySQL 提交的话,当然会出问题了。于是更改 MySQL 的 delimiter,上面 MySQL 存储过程就编程这样子了:
- delimiter //; -- 改变 MySQL delimiter 为:“//”
- drop procedure if exists pr_stat_agent //
- -- call pr_stat_agent ('2008-07-17', '2008-07-18')
- create procedure pr_stat_agent
- (
- pi_date_from date
- ,pi_date_to date
- )
- begin
- -- check input
- if (pi_date_from is null) then
- set pi_date_from = current_date();
- end if;
- if (pi_date_to is null) then
- set pi_date_to = pi_date_from;
- end if;
- set pi_date_to = date_add(pi_date_from, interval 1 day);
- -- stat
- select agent, count(*) as cnt
- from apache_log
- where request_time >= pi_date_from
- and request_time < pi_date_to
- group by agent
- order by cnt desc;
- end; //
- delimiter ; // -- 改回默认的 MySQL delimiter:“;”
MySQL delimiter 符号是可以自由设定的,你可以用 “/” 或者“” 等。但是 MySQL 存储过程中比较常见的用法是 “//” 和 “”。