MySQL--函式
阿新 • • 發佈:2020-08-03
函式
含義:一組預先編譯好的SQL語句的集合,理解成批處理語句1、提高程式碼的重用性
2、簡化操作
3、減少了編譯次數並且減少了和資料庫伺服器的連線次數,提高了效率 區別: 儲存過程:可以有0個返回,也可以有多個返回,適合做批量插入、批量更新
函式:有且僅有1 個返回,適合做處理資料後返回一個結果 #一、建立語法
CREATE FUNCTION 函式名(引數列表) RETURNS 返回型別 BEGIN 函式體 END注意:
1.引數列表 包含兩部分:
引數名 引數型別 2.函式體:肯定會有return語句,如果沒有會報錯
如果return語句沒有放在函式體的最後也不報錯,但不建議 return 值;
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:根據部門名,返回該部門的平均工資
CREATEFUNCTION 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)$