MySQL 基础 ———— 存储过程与函数
一、存儲過程介紹
存儲過程是一組預先編譯好的SQL語句的集合,可理解成批處理語句。它的優(yōu)點主要有以下幾點:
1、提高代碼的重用性;
2、簡化操作;
3、減少了編譯次數(shù)并且減少了和數(shù)據(jù)庫服務器的連接次數(shù),提高了效率。
二、存儲過程的創(chuàng)建
DELIMITER 定界符 CREATE PROCEDURE 存儲過程名(形參列表) BEGIN存儲過程體(一組合法的SQL語句) END 定界符但MySQL實際存儲的存儲過程定義可能并沒有這么簡單:
在使用存儲過程的時候,一定要注意參數(shù)列表中,每個形參的定義都包含三部分:
參數(shù)模式 (IN、OUT、INOUT)、參數(shù)名、參數(shù)類型
例如:
IN stuname VARCHAR(10)?牢記參數(shù)模式分為三種:
IN : 該模式參數(shù)僅可以作為輸入值使用。
OUT : 該模式參數(shù)僅可以作為輸出值使用,從存儲過程并沒有類似函數(shù)那樣的返回值,通過定義OUT 模式的參數(shù),可以讓存儲過程攜帶返回值。
INOUT : 該模式參數(shù)既可以作為輸入,也可以作為輸出。
?另外,如果存儲過程體僅有一句話,可以省略 BEGIN 和 END 。存儲過程體的每條SQL 語句要求必須以分號結尾!
定義存儲過程需要設置一個定界符,代表存儲過程定義完畢,一般使用 $ 、& 等特殊字符均可。
注意,存儲過程一旦創(chuàng)建,將無法修改(存儲體),如果希望修改,可以刪除后重建。刪除存儲過程的方法和 DROP TABLE 類似,只是將 TABLE 關鍵字換為 PROCEDURE 即可。
查看創(chuàng)建好的存儲過程可以使用:
SHOW CREATE PROCEDURE 存儲過程名;三、存儲過程的調(diào)用
CALL 存儲過程名(實參列表);四、MySQL 函數(shù)
函數(shù)和存儲過程很類似,也是是一組預先編譯好的SQL語句的集合,類似于批處理語句。提供了代碼重用性,簡化操作,同時減少了編譯次數(shù),并且減少了和數(shù)據(jù)庫服務器的連接次數(shù),提供了效率。
但是和存儲過程也有所不同,他們的區(qū)別主要是:
存儲過程:可以沒有返回值,也可以有多個返回值,適合做批量插入,批量更新。
函數(shù):有且僅有 1 個返回值,適合做處理數(shù)據(jù)后返回一個結果。
五、函數(shù)的創(chuàng)建
CREATE FUNCTION 函數(shù)名(參數(shù)列表) RETURNS 返回類型 BEGIN函數(shù)體 END參數(shù)列表中的每個參數(shù)包含兩部分:
參數(shù)名、參數(shù)類型
函數(shù)體必須要有 RETURN 語句,并且與"函數(shù)簽名" 中的 RETURNS 類型相對應,否則會報錯。一般將 RETURN 語句放在函數(shù)體的最后,其他位置不建議。
函數(shù)體如果只有一句話,同樣可以像存儲過程一樣省略 BEGIN 和 END 。
函數(shù)定義同樣需要 DELIMITER 設置定界符。
六、函數(shù)的調(diào)用
SELECT 函數(shù)名(實參列表);?
?
總結
以上是生活随笔為你收集整理的MySQL 基础 ———— 存储过程与函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis源码分析第一天------
- 下一篇: mysql xa_Mysql对XA的支持