新聞中心

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務徽州,十余年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792
在 mysql 中,使用
CREATE FUNCTION 語句來創(chuàng)建存儲函數(shù),其語法形式如下:
CREATE FUNCTION sp_name ([func_parameter[...]])
RETURNS type
[characteristic ...] routine_body
其中:
- sp_name 參數(shù):表示存儲函數(shù)的名稱;
- func_parameter:表示存儲函數(shù)的參數(shù)列表;
- RETURNS type:指定返回值的類型;
- characteristic 參數(shù):指定存儲函數(shù)的特性,該參數(shù)的取值與存儲過程是一樣的;
- routine_body 參數(shù):表示 SQL 代碼的內(nèi)容,可以用 BEGIN...END 來標示 SQL 代碼的開始和結束。
注意:在具體創(chuàng)建函數(shù)時,函數(shù)名不能與已經(jīng)存在的函數(shù)名重名。除了上述要求外,推薦函數(shù)名命名(標識符)為 function_xxx 或者 func_xxx。
func_parameter 可以由多個參數(shù)組成,其中每個參數(shù)由參數(shù)名稱和參數(shù)類型組成,其形式如下:
[IN | OUT | INOUT] param_name type;
其中:
- IN 表示輸入?yún)?shù),OUT 表示輸出參數(shù),INOUT 表示既可以輸入也可以輸出;
- param_name 參數(shù)是存儲函數(shù)的參數(shù)名稱;
- type 參數(shù)指定存儲函數(shù)的參數(shù)類型,該類型可以是 MySQL 數(shù)據(jù)庫的任意數(shù)據(jù)類型。
例 1
使用 CREATE FUNCTION 創(chuàng)建查詢 tb_student 表中某個學生姓名的函數(shù),SQL 語句和執(zhí)行過程如下:
mysql> USE test;
Database changed
mysql> DELIMITER //
mysql> CREATE FUNCTION func_student(id INT(11))
-> RETURNS VARCHAR(20)
-> COMMENT '查詢某個學生的姓名'
-> BEGIN
-> RETURN(SELECT name FROM tb_student WHERE tb_student.id = id);
-> END //
Query OK, 0 rows affected (0.10 sec)
mysql> DELIMITER ;
上述代碼中,創(chuàng)建了 func_student 函數(shù),該函數(shù)擁有一個類型為 INT(11) 的參數(shù) id,返回值為 VARCHAR(20) 類型。SELECT 語句從 tb_student 表中查詢 id 字段值等于所傳入?yún)?shù) id 值的記錄,同時返回該條記錄的 name 字段值。
創(chuàng)建函數(shù)與創(chuàng)建存儲過程一樣,需要通過命令
DELIMITER // 將 SQL 語句的結束符由“;”修改為“//”,最后通過命令
DELIMITER ; 將結束符號修改成 SQL 語句中默認的結束符號。
如果在存儲函數(shù)中的 RETURN 語句返回一個類型不同于函數(shù)的 RETURNS 子句中指定類型的值,返回值將被強制為恰當?shù)念愋?。比如,如果一個函數(shù)返回一個 ENUM 或 SET 值,但是 RETURN 語句返回一個整數(shù),對于 SET 成員集的相應的 ENUM 成員,從函數(shù)返回的值是字符串。
拓展閱讀
由于存儲函數(shù)和存儲過程的查看、修改、刪除等操作幾乎相同,所以我們不再詳細講解如何操作存儲函數(shù)了。
查看存儲函數(shù)的語法如下:
SHOW FUNCTION STATUS LIKE 存儲函數(shù)名;
SHOW CREATE FUNCTION 存儲函數(shù)名;
SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME=存儲函數(shù)名;
可以發(fā)現(xiàn),操作存儲函數(shù)和操作存儲過程不同的是將 PROCEDURE 替換成了 FUNCTION。同樣,修改存儲函數(shù)的語法如下:
ALTER FUNCTION 存儲函數(shù)名 [ 特征 ... ]
存儲函數(shù)的特征與存儲過程的基本一樣。
刪除存儲過程的語法如下:
DROP FUNCTION [ IF EXISTS ] <函數(shù)名>
當前文章:MySQL存儲函數(shù)詳解
標題URL:http://m.fisionsoft.com.cn/article/dppogsc.html


咨詢
建站咨詢
