函數:一組預先編譯好的SQL語句的集合,相當於批處理語句。
函數和存儲過程的區別:存儲過程可以有0個返回,也可以有多個返回,適合做批量插入、批量更新;函數有且僅有1個返回,適合處理數據後返回一個結果。
函數優點:
1、提高代碼的重要性。
2、簡化操作。
3、減少了編譯次數並且減少了和數據服務器的連接次數,提高了效率。
創建函數模板
DELIMITER $
create FUNCTION 函數名(參數列表) RETURNS 返回類型
BEGIN
函數體
END $;
函數調用方式和存儲過程調用方式不一樣,函數調用直接用select。
函數樣例1:
DELIMITER $
create FUNCTION mycount() RETURNS INT
BEGIN
DECLARE c INT DEFAULT 0;
select count(*) INTO c from employees;
RETURN c;
END $;
--調用
select mycount();
函數樣例2:
DELIMITER $
create FUNCTION myf2(ename VARCHAR(32)) RETURNS DOUBLE
BEGIN
DECLARE c DOUBLE DEFAULT 0;
select salary INTO c from employees where last_name=ename;
RETURN c;
END $;
--調用
select myf2('Hunold')
函數樣例3:
DELIMITER $
create FUNCTION myf3(ename VARCHAR(32)) RETURNS DOUBLE
BEGIN
DECLARE c DOUBLE DEFAULT 0;
select AVG(b.salary) INTO c from departments a INNER JOIN employees b on a.department_id=b.department_id where a.department_name=ename;
RETURN c;
END $;
select myf3('Adm')