以前,咱們列舉很多mysql自帶的函數,可是有些時候自帶函數並不能很好知足咱們的需求,此時就須要自定義存儲函數了,存儲函數與存儲過程有些相似,簡單來講就是封裝一段sql代碼,完成一種特定的功能,並返回結果。其語法以下:mysql
CREATE FUNCTION 函數([參數類型 數據類型[,….]]) RETURNS 返回類型sql
BEGIN函數
SQL語句.....工具
RETURN (返回的數據)spa
END3d
與存儲過程不一樣的是,存儲函數中不能指定輸出參數(OUT)和輸入輸出參數(INOUT)類型。存儲函數只能指定輸入類型並且不能帶IN。同時存儲函數能夠經過RETURN命令將處理的結果返回給調用方。注意必須在參數列表後的RETURNS( 該值的RETURNS多個S,務必留意)命令中預先指定返回值的類型。以下建立一個計算斐波那契數列的函數blog
這裏命名存儲函數時使用了【fn_】做爲開頭,這樣能夠更容易區分與【sp_】開頭的存儲過程,從上述語句能夠看出前面在存儲過程分析的流程語句也是能夠用於存儲函數的,一樣的,DECLARE聲明變量和SET設置變量也可用於存儲函數,固然包括定義異常處理語句也是適應的,請注意執行存儲函數使用的是select關鍵字,可同時執行多個存儲函數,嗯,存儲函數就這樣定義,是否是跟存儲過程很類似呢?但仍是有區別的,這點留到後面分析。ok~,爲了進一步熟悉存儲函數,下面編寫一個用於向user插入用戶的存儲函數:get
刪除存儲函數博客
本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈