存儲(chǔ)過(guò)程

一.基礎(chǔ)語(yǔ)法

說(shuō)明

delimiter //

一般情況下MYSQL以;結(jié)尾表示確認(rèn)輸入并執(zhí)行語(yǔ)句,但在存儲(chǔ)過(guò)程中;不是表示結(jié)束,因此可以用該命令將;號(hào)改為//表示確認(rèn)輸入并執(zhí)行。

mysql> delimiter //      #定義結(jié)束符號(hào)為//
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END;
-> //                  #//標(biāo)識(shí)存儲(chǔ)過(guò)程結(jié)束
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;           #更換結(jié)束符號(hào)為;
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.創(chuàng)建存儲(chǔ)過(guò)程

基本語(yǔ)法

CREATE PROCEDURE PROCEDURE_NAME
(
  [in|out|inout] param datatype
)
BEGIN
END;
  • IN 輸入?yún)?shù)
    表示該參數(shù)的值必須在調(diào)用存儲(chǔ)過(guò)程時(shí)指定,在存儲(chǔ)過(guò)程中修改該參數(shù)的值不能被返回,為默認(rèn)值
  • OUT 輸出參數(shù)
    該值可在存儲(chǔ)過(guò)程內(nèi)部被改變,并可返回
  • INOUT 輸入輸出參數(shù)
    調(diào)用時(shí)指定,并且可被改變和返回

2.調(diào)用存儲(chǔ)過(guò)程

CALL PROCEDURE_NAME()

3.刪除存儲(chǔ)過(guò)程

drop procedure sp_name//

說(shuō)明:不能在一個(gè)存儲(chǔ)過(guò)程中刪除另一個(gè)存儲(chǔ)過(guò)程,只能調(diào)用另一個(gè)存儲(chǔ)過(guò)程

4.其他常用命令

顯示數(shù)據(jù)庫(kù)中所有存儲(chǔ)的存儲(chǔ)過(guò)程基本信息,包括所屬數(shù)據(jù)庫(kù),存儲(chǔ)過(guò)程名稱(chēng),創(chuàng)建時(shí)間等

show procedure status

顯示某一個(gè)存儲(chǔ)過(guò)程的詳細(xì)信息

show create procedure sp_name

二.數(shù)據(jù)結(jié)構(gòu)

1.變量

自定義變量
語(yǔ)法

DECLARE param INT DEFAULT 100;

變量分為用戶變量系統(tǒng)變量

  • 系統(tǒng)變量又分為會(huì)話和全局級(jí)變量
  • 用戶變量名一般以@開(kāi)頭,濫用用戶變量會(huì)導(dǎo)致程序難以理解及管理

用戶變量的使用

--單變量
SELECT 'Hello World' INTO @x; 
--多變量
SELECT @LEADER_USER_ID:=GROUP_CONCAT(id),@LEADER_USER_NAME:=GROUP_CONCAT(name) FROM USER_INFO WHERE ORG_ID = 'GUANGDONG'; 

2.流程控制

  • 順序結(jié)構(gòu)
  • 分支結(jié)構(gòu)
    if
    case
  • 循環(huán)結(jié)構(gòu)
    for循環(huán)
    while循環(huán)
    loop循環(huán)
    repeat until循環(huán)

注:
區(qū)塊定義,常用
begin
......
end;
也可以給區(qū)塊起別名,如:
lable:begin
......
end lable;
可以用leave lable;跳出區(qū)塊,執(zhí)行區(qū)塊以后的代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 藥,對(duì)的,就是藥。22天行動(dòng)營(yíng)對(duì)我來(lái)說(shuō)就是藥,特效藥。 入營(yíng)前 焦慮,崩潰,習(xí)得性無(wú)助,這是加入行動(dòng)營(yíng)之前的我。我...
    我的筆記閱讀 374評(píng)論 1 5
  • 深夜在海上孤獨(dú)的漂泊,惶惶不安。 不是沙漠,而是無(wú)垠的大海,波濤洶涌,仿若兇獸在咆哮。三少立于扁舟,遙望遠(yuǎn)方那一縷...
    半路提筆閱讀 472評(píng)論 3 2
  • 如何在一個(gè)鐵環(huán)上更快更好的繞線圈?這曾是電子元器件制造過(guò)程中的一個(gè)瓶頸。 發(fā)明家拿到這個(gè)問(wèn)題,迸發(fā)出很多思路:利用...
    LeonYan閱讀 734評(píng)論 1 2

友情鏈接更多精彩內(nèi)容