一.含義
一組預先編譯好的SQL語句的集合,了解成批處理語句
1.提高代碼的複用性
2.操作簡單
3.減少了編譯次數并且減少了和資料伺服器的連接配接次數,提高了效率
二.和存儲過程的差別
存儲過程:可以無傳回,也可以有多個傳回,适合做批量插入、批量更新
函數:有且僅有一個傳回,合适做資料處理後傳回一個結果,做查詢一個值
三.文法格式
CREATE FUNCTION 函數名(參數清單)RETUENS 傳回類型
BEGIN
函數體
END
注:
1.參數清單包含兩部分:參數名 參數類型
2.函數中僅有一句話,則可以省略begin end
3.使用delimiter語句設定結束标簽
四.調用文法
SELECT 函數名(參數清單)
執行函數中的所有語句 函數中有顯示的語句它也能顯示
有插入修改也能做,執行完把顯示值傳回出來
五.函數示例

1.無參有傳回
CREATE FUNCTION func1() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;#定義局部變量c
SELECT COUNT(*) INTO c #指派給c
from student;
RETURN c;
END
#調用函數
SELECT func1();
結果
2.有參有傳回
CREATE FUNCTION func2(stuname VARCHAR(255)) RETURNS INT
BEGIN
DECLARE age INT DEFAULT 0;
SELECT e.age INTO age
FROM student e WHERE e.name = stuname;
RETURN age;
END
#調用函數
SELECT func2('小明');
3.定義使用者變量
CREATE FUNCTION func3(stuname VARCHAR(255)) RETURNS INT
BEGIN
SET @ag = 0;#定義使用者變量
SELECT e.age INTO @ag #指派
FROM student e WHERE e.name = stuname;
RETURN @ag;
END
4.展示函數
#展示函數
SHOW CREATE FUNCTION func3;
5.删除函數
#删除函數
DROP FUNCTION func3;
參考文章:https://blog.csdn.net/wzhJava_Only/article/details/87712460