MySQL系列----創建存儲函數、遊標的使用
本期是MySQL系列哦~~
主要用兩個例子跟大家分別展示創建存儲函數以及遊標的使用
創建存儲函數
存儲函數不同於存儲過程,它有返回值,需要有RETURN語句
輸入任意三個數,結果輸出它們的最小值
DELIMITER $$
## 創建存儲函數smin
CREATE FUNCTION `sj`.`smin`(i INT,j INT,k INT) RETURNS INT
BEGIN
DECLARE smin INT;
IF i<=j THEN
SET smin=i;
IF smin<=k THEN
RETURN smin;
ELSE
SET smin=k;
RETURN smin;
END IF;
ELSE
SET smin=j;
IF smin<=k THEN
RETURN smin;
ELSE
SET smin=k;
RETURN smin;
END IF;
RETURN smin;
END IF;
END$$
DELIMITER ;
調用函數
## 用50,15,18調用smin函數調試
SELECT smin(50,15,18);
使用遊標
遊標其實就像是一個指針,它可以對指定位置的數據進行處理,逐一地讀取一條記錄。
使用遊標從表中查詢信息
在使用時,基本上要遵循這樣的順序:
聲明(DECLARE)——打開(OPEN)——提取(FETCH)——關閉(CLOSE)
從sc表中查詢成績高於80分的學生信息
USE d_eams;
DELIMITER ##
CREATE FUNCTION cur1()
RETURNS CHAR(255)
BEGIN
DECLARE flag BOOLEAN DEFAULT TRUE;
DECLARE xh CHAR(9);
## 聲明遊標sc_cur1
DECLARE sc_cur1 CURSOR
FOR SELECT * FROM t_sc WHERE 成績>80;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET flag=FALSE;
## 打開遊標sc_cur1
OPEN sc_cur1;
FETCH sc_cur1 INTO xh;
WHILE flag DO
RETURN (SELECT * FROM t_sc WHERE 學號=xh AND 成績>80);
FETCH FROM sc_cur1 INTO xh;
END WHILE;
CLOSE sc_cur1;
END##
SELECT * FROM t_sc WHERE 成績>80##
DELIMITER ;