25-mysql--函數

含義

一組預先編譯好的sql語句的集合,理解成批處理語句
1、提高代碼的重用性
2、簡化操作
3、減少了編譯次數並且減少了和數據庫服務器的連接次數,提高了效率

函數和存儲過程的區別

存儲過程:可以有0個返回,也可以有多個返回值,適合做批量插入、批量更新
函數:有且僅有必須有1個返回,適合做處理數據後返回一個結果

創建語法

CREATE FUNCTION 函數名(參數列表) RETURNS 返回類型
BEGIN
	函數體
END

注意:
1 參數列表 包含兩部分:參數名,參數類型
2 函數體:肯定會有return語句,如果沒有回報錯
如果return 語句沒有放在函數體的最後也不會報錯,但不建議
3 函數體中僅有一句話,則可以省略begin end
4 使用delimiter語句設置結束標記

調用語法

SELECT 函數名(參數列表);

案例:

1 無參有返回
案例:返回公司的員工個數
CREATE FUNCTION myf1() RETURNS INT
BEGIN
	DECLARE c INT DEFAULT 0;#定義變量
	SELECT COUNT(*) INTO c #變量賦值
	FROM employees;
	
	RETURN c;
END $

SELECT myf1() $

2 有參有返回
案例1:根據員工名,返回它的工資
CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
BEGIN
	SET @sal=0;#定義用戶變量
	SELECT salary INTO @sal
	FROM employees
	WHERE last_name=empName;
	
	RETURN @sal;
END $
SELECT myf2('k_ing') $

案例2:根據部門名,返回該部門的平均工資
CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS DOUBLE
BEGIN
	DECLARE sal DOUBLE;
	
	SELECT AVG(salary) INTO sal
	FROM employees e
	INNER JOIN departments d 
	ON e.department_id=d.department_id
	WHERE d.department_name=deptName;
	
	RETURN sal;
END $
SELECT myf3('IT') $

查看/刪除 函數

查看函數
SHOW CREATE FUNCTION myf3;

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