MySQL進階19--函式的建立(舉例)/設定mysql的建立函式的許可權/檢視(show)/刪除(drop) / 舉4個栗子
阿新 • • 發佈:2018-11-02
/*MySQL進階19 函式 儲存過程和函式:都類似於java中的方法; 儲存過程和函式通用好處: 1.提高程式碼的重用性 2.簡化操作 好處: 減少操作次數,減少了編譯次數,減少了和伺服器的連線次數,提高了效率 --------------- #區別 儲存過程 (可以有0個或者多個返回值),適合做批量插入或者批量更新 函式: 有且僅有一個返回值 ; 適合做處理資料後的返回一個結果 */ /* #一: 建立語法 create function 函式名(引數列表) returns 返回型別 begin 函式體 end 注意: 引數列表 包含兩個部分; 引數名 引數型別; 函式體 : 肯定有return 語句,如果沒有會報錯; 3. 函式體中僅有一句話,則可以省略begin end 4. 使用delimiter 語句設定結束標記 delimiter $; #二: 呼叫自定義函式 select 函式名(引數列表)*/ #-------------------案例演示函式------------------------------ #1 無參有返回 #根據提示,設定mysql函式許可權 SHOW VARIABLES LIKE 'log_bin_trust_function_creators'; SET @@global.log_bin_trust_function_creators='ON'; #案例 : 返回公司的員工個數 [如下程式碼可在本地執行,不用在cmd終端開啟執行] DELIMITER $ CREATE FUNCTION myf1() RETURNSINT BEGIN DECLARE rt1 INT DEFAULT 0; #定義區域性變數/賦值並returns SELECT COUNT(*) INTO rt1 FROM employees; RETURN rt1; END $ SELECT myf1() $; ##結果是 : 107 #2.有引數有返回 #案例1:根據員工名,返回它的工資 DELIMITER $ CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE BEGIN DECLARErt DOUBLE DEFAULT 0; SELECT `salary` INTO rt FROM employees e WHERE e.last_name = empName AND e.first_name='empName'; RETURN rt; END $ SET @empName='K_ing' $ SELECT myf2(@empName) $; ##返回值為 : 24000 #案例2: 根據部門名,返回該部門的平均工資 DELIMITER $ CREATE FUNCTION myf5(depName VARCHAR(20)) RETURNS DOUBLE BEGIN DECLARE rt DOUBLE ; SELECT AVG(salary) INTO rt FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.department_name=depName; RETURN rt; END $ SELECT myf5('IT') $; ##結果是 : 5760 #三: 檢視函式的過程/charset/Datebase collation等資訊 SHOW CREATE FUNCTION myf5; #四: 刪除函式(命令列可操縱!) DROP FUNCTION myf3; #案例" #1.建立函式,實現傳入兩個float ,返回兩者之和 DELIMITER $ CREATE FUNCTION test_fun1(a FLOAT,b FLOAT) RETURNS FLOAT BEGIN DECLARE SUM FLOAT DEFAULT 0; SET SUM=a+b; RETURN SUM; END $ SELECT test_fun1(1,12) $ ##結果為:13