日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 基础 ———— 存储过程与函数

發布時間:2025/3/12 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 基础 ———— 存储过程与函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。