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