设为首页 加入收藏

TOP

delimiter在mysql中的作用
2011-06-12 21:40:08 来源: 作者: 【 】 浏览:431次 评论:0

其实就是告诉mysql教程解释器,该段命令是否已经结束了,mysql是否可以执行了。
默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,
那么回车后,mysql将会执行该命令。如输入下面的语句
mysql> select * from test_table;
然后回车,那么mysql将立即执行该语句。

但有时候,不希望mysql这么做。在为可能输入较多的语句,且语句中包含有分号。
如试图在命令行客户端中输入如下语句
mysql> create function `shorten`(s varchar(255), n int)
mysql> returns varchar(255)
mysql> begin
mysql> if isnull(s) then
mysql> return '';
mysql> elseif n<15 then
mysql> return left(s, n);
mysql> else
mysql> if char_length(s) <=n then
mysql> return s;
mysql> else
mysql> return concat(left(s, n-10), '...', right(s, 5));
mysql> end if;
mysql> end if;
mysql> end;
默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
因为mysql一遇到分号,它就要自动执行。
即,在语句return '';时,mysql解释器就要执行了。
这种情况下,就需要事先把delimiter换成其它符号,如//或$$。
mysql> delimiter //
mysql> create function `shorten`(s varchar(255), n int)
mysql> returns varchar(255)
mysql> begin
mysql> if isnull(s) then
mysql> return '';
mysql> elseif n<15 then
mysql> return left(s, n);
mysql> else
mysql> if char_length(s) <=n then
mysql> return s;
mysql> else
mysql> return concat(left(s, n-10), '...', right(s, 5));
mysql> end if;
mysql> end if;
mysql> end;//
这样只有当//出现之后,mysql解释器才会执行这段语句


例子:

mysql> delimiter //

mysql> create procedure simpleproc (out param1 int)
-> begin
-> select count(*) into param1 from t;
-> end;
-> //
query ok, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call simpleproc(@a);
query ok, 0 rows affected (0.00 sec)

mysql> select @a;
+------+
| @a |
+------+
| 3 |
+------+
1 row in set (0.00 sec)

delimiter在mysql中的作用更多相关文章

您看到此篇文章时的感受是:
Tags: 责任编辑:administrator
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇sql Union All与 UNION ALL语法与.. 下一篇mysql数据库连接类

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

相关栏目

最新文章

图片主题

热门文章

推荐文章

相关文章

广告位