百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> delimiter在mysql中的作用
分享文章到:

delimiter在mysql中的作用

发布时间:01/15 来源: 浏览: 关键词:

其实就是告诉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)

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有3人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板