再来学mysql就会感到很奇怪澳门太陽城集团登录网址

初学mysql时,恐怕不太明白delimiter的确实用途,delimiter在mysql相当多地方出现,比方存款和储蓄进程、触发器、函数等。

澳门太陽城集团登录网址,学过oracle的人,再来学mysql就能感到很奇异,百思不得其解。

实在便是告诉mysql解释器,该段命令是不是早就终止了,mysql是或不是能够举办了。
暗许景况下,delimiter是分号(😉 

澳门太阳集团城网址,在指令行客户端中,如果有一行命令以总局甘休,
那么回车的后边,mysql将会实践该命令。如输入上边包车型大巴语句
再来学mysql就会感到很奇怪澳门太陽城集团登录网址。mysql> select * from
test_table;
再来学mysql就会感到很奇怪澳门太陽城集团登录网址。下一场回车,那么MySQL将立即实践该语句。

再来学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就会感到很奇怪澳门太陽城集团登录网址。  暗许景况下,不只怕等到用户把那么些言辞全体输入完之后,再试行整段语句。
再来学mysql就会感到很奇怪澳门太陽城集团登录网址。再来学mysql就会感到很奇怪澳门太陽城集团登录网址。  因为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的储存进程中,须求小心的一些是:

drop PROCEDURE if EXISTS proc_while_test;
delimiter ;;
CREATE DEFINER = root@localhost PROCEDURE proc_while_test(IN n int)
BEGIN 
 DECLARE i int;
 DECLARE s int;
  SET i = 0;
 SET s = 0;
 WHILE i <= n DO
  SET s = s + i;
          set i++;
  set i = i + 1;
 end WHILE;
 select s;
end
;;
delimiter ;

  在上头的例子中,set
i++;是会形成整个while循环报错。在mysql的贮存进程中,i++是不允许这样写的。必要写成i=i+1这种样式才足以。

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图