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 ;

有幫助的別忘了點個贊再走哦!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章