程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> delimiter在mysql中的作用

delimiter在mysql中的作用

編輯:MySQL綜合教程

其實就是告訴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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved