mysql-函數

**函數**
含義:一組預先編譯好的SQL語句的集合,理解成批處理語句
1、提高代碼的重用性
2、簡化操作
3、減少了編譯次數並且減少了和數據庫服務器的連接次數,提高了效率
區別:
存儲過程:可以有0個返回,也可以有多個返回,適合做批量插入、批量更新
函數:有且僅有1 個返回,適合做處理數據後返回一個結果



一、創建語法
CREATE FUNCTION 函數名(參數列表) RETURNS 返回類型
BEGIN
	函數體
END
注意:
1.參數列表 包含兩部分:
參數名 參數類型
2.函數體:肯定會有return語句,如果沒有會報錯
如果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
	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;

#案例
#一、創建函數,實現傳入兩個float,返回二者之和

CREATE FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS FLOAT
BEGIN
	DECLARE SUM FLOAT DEFAULT 0;
	SET SUM=num1+num2;
	RETURN SUM;
END $

SELECT test_fun1(1,2)$










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