日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

声明定义存储过程或者函数时,其中的 delimiter 关键字是干嘛的呢?

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 声明定义存储过程或者函数时,其中的 delimiter 关键字是干嘛的呢? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們寫 SQL 的時候,MySQL 怎么判斷 SQL 是否已經結束了,可以去執行了?

需要一個結束符,當 MySQL 看到這個結束符的時候,表示可以執行前面的語句了,MySQL 默認以分號為結束符。

當我們創建存儲過程或者自定義函數的時候,寫了很大一片 SQL,里面包含了很多分號,但是整個代碼語句是一個整體,不能讓 MySQL 讀到分號就立即去執行,這樣肯定是不行的。我們需要完整的代碼語句一起執行才行。所以此時我們就不可以用分號作為結束符了,必須另外聲明結束符。

delimiter 關鍵字就是用來自定義結束符的,請參考下面的示例:

mysql> /*創建表test1*/ mysql> drop table IF EXISTS test1; Query OK, 0 rows affected (0.01 sec)mysql> create table test1(a int PRIMARY KEY,b int); Query OK, 0 rows affected (0.01 sec)mysql> mysql> /*聲明腳本的結束符為$$*/ mysql> DELIMITER $$ mysql> DROP PROCEDURE IF EXISTS proc1;-> CREATE PROCEDURE proc1()-> BEGIN-> /*聲明了一個局部變量*/-> DECLARE v_a int;->-> select ifnull(max(a),0)+1 into v_a from test1;-> select @v_b:=v_a*2;-> insert into test1(a,b) select v_a,@v_b;-> end $$ Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql> mysql> /*聲明腳本的結束符為;*/ mysql> DELIMITER ; mysql> mysql> /*調用存儲過程*/ mysql> call proc1(); +-------------+ | @v_b:=v_a*2 | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec)Query OK, 1 row affected (0.01 sec)mysql> /*查看結果*/ mysql> select * from test1; +---+------+ | a | b | +---+------+ | 1 | 2 | +---+------+ 1 row in set (0.00 sec)

總結

以上是生活随笔為你收集整理的声明定义存储过程或者函数时,其中的 delimiter 关键字是干嘛的呢?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。