mysql儲存函式(2018.10.10學習筆記)
阿新 • • 發佈:2018-12-14
DELIMITER // -- 自定義函式 -- 函式要素:函式名,引數列表(形參和實參),返回值,函式體(作用域) -- 建立函式 -- 建立語法 CREATE FUNCTION functionName([形參列表]) RETURNS 資料型別 -- 規定要返回的資料型別 BEGIN -- 函式體 -- 返回值:return 型別(指定資料型別); END CREATE FUNCTION f1() RETURNS INT RETURN 100; -- 自定義函式與系統函式呼叫方式是一樣:select 函式名([實參列表]); -- 呼叫函式 SELECT fi(); -- 檢視所有函式 SHOW FUNCTION STATUS\G -- 檢視函式建立語句 SHOW CREATE FUNCTION f1\G -- 刪除函式 DROP FUNCTION f1; -- 函式引數 -- 引數分兩種:定義時的引數叫形參,呼叫時的引數叫實參(實參可以是數值也可以是變數,實參要求必須指定資料型別) FUNCTION 函式名(形參名字 欄位型別) RETURNS 資料型別 -- 做函式:計算1-n之間的和 CREATE FUNCTION f2(int_1 INT) RETURNS INT BEGIN -- 定義條件變數 SET @i = 1; -- @符號定義的變數是全域性變數,沒有的可以理解為區域性變數 SET @res = 0; -- 儲存結果 -- 迴圈求和 WHILE @i <= int_1 DO -- 求和:任何變數要修改,必須使用set關鍵字 -- mysql中沒有+=,沒有++ SET @res = @res + @i; -- 修改迴圈變數 SET @i = @i + 1; END WHILE; -- 返回值 RETURN @res; END // -- 作用域 -- mysql中的作用域與js中的作用域完全一樣 -- 全域性變數可以在任何地方使用;區域性變數只能在函式內部使用 -- 全域性變數:使用set關鍵自定義,使用@符號標誌 -- 區域性變數:使用declare關鍵字宣告,沒有@符號;所有的區域性變數的宣告,必須在函式體開始之前 -- 求和:1-n之間的和,要求5的倍數不加 CREATE FUNCTION f3(int_1 INT) RETURNS INT BEGIN -- 宣告變數:迴圈變數,結果變數 DECLARE i INT DEFAULT 1; DECLARE res INT DEFAULT 0; -- 定義區域性變數可以有屬性 -- 迴圈判斷 mywhile:WHILE i <= int_1 DO -- 相加:判斷 IF i % 5 = 0 THEN -- 修改迴圈條件 SET i = i + 1; -- 不符合條件:迴圈重新來過 ITERATE mywhile; END IF; -- 相加 SET res = res + i; -- 改變迴圈變數 SET i = i + 1; END WHILE; -- 返回結果 RETURN res; END//