存儲過程(Stored Procedure):是一組用於完成特定數據庫功能的sql語句集,該sql語句集經過編譯后存儲在數據庫系統中,在使用的時候,用戶通過調用指定已經定義好的存儲過程並執行它,從而完成一系列的數據庫操作;
1.聲明創建一個存儲過程
# 定義基本存儲過程 DROP PROCEDURE IF EXISTS test; #如果存在指定存儲過程則刪除它 DELIMITER // # 定義存儲過程結束符, CREATE PROCEDURE test() # 創建存儲過程 BEGIN # 存儲過程要執行的操作 SELECT 'Hello World!' END// CALL test(); # 調用存儲過程
2.聲明變量
#存儲過程變量的聲明和使用 DROP PROCEDURE IF EXISTS test; #如果存在指定存儲過程則刪除它 DELIMITER // # 定義存儲過程結束符, CREATE PROCEDURE test() BEGIN DECLARE aa VARCHAR(20); # 定義變量 DECLARE bb INT DEFAULT 0; # 定義int 類型變量 默認為0; SET aa = '張三'; # 變量賦值 SELECT aa; # 輸出變量 SELECT bb; # 輸出變量 END// CALL test(); # 調用存儲過程
3.流程控制語句的聲明使用
#存儲過程流程控制語句使用 DROP PROCEDURE IF EXISTS test_2; DELIMITER // CREATE PROCEDURE test_2() BEGIN DECLARE aa INT; # 定義變量 DECLARE bb INT; # 定義變量 SET aa = 20; # 變量賦值 SET bb = 20; # 變量賦值 IF aa > bb THEN # 判斷 SELECT aa; ELSEIF aa < bb THEN # else if 可以有多個 SELECT bb; ELSE # else 只能存在一個 SELECT aa+bb; END IF; # 結束if 語句 END// CALL test_2(); # 調用存儲過程
4.loop 循環語句的使用
#loop 循環語句的使用 # 輸出1-100之間所有數字之和 DROP PROCEDURE IF EXISTS test_3; DELIMITER // CREATE PROCEDURE test_3() BEGIN DECLARE aa INT DEFAULT 0; # 定義變量 默認值為0 DECLARE sums INT DEFAULT 0; # 定義變量 默認值為0 loopName:LOOP # 循環開始:loopName 定義循環名 SET aa = aa + 1; # 設置變量自增 SET sums = sums + aa; IF aa >= 100 THEN # loop 需要設置跳出條件,不然會變成死循環 LEAVE loopName; # 結束循環 END IF; # 結束if 語句 END LOOP; # 結束loop 循環語句 SELECT sums; # 輸出結果 END// CALL test_3(); # 調用存儲過程