1. 程式人生 > >MySQL數據庫8(二十六)存儲過程

MySQL數據庫8(二十六)存儲過程

com 直接 形參 基本上 一次 cal inf 分享 技術分享

技術分享圖片技術分享圖片存儲過程

存儲過程的概念

存儲過程(stored procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL語句集,存儲在數據庫中,經過第一次編譯後再次調用不需要再次編譯,(效率比較高)用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象(針對SQL編程而言)。

存儲過程:簡稱過程

與函數的區別

相同點

1、存儲過程和函數的目的都是為了可重復地執行操作數據庫的SQL語句的集合(代碼復用)

2、存儲過程、函數都是一次編譯,後續執行

不同點

1、標識符不同。函數的標識符為function,過程為procedure

2、函數中有返回值,且必須返回,而過程沒有返回值

3、過程無返回值類型,不能將結果直接賦值給變量;函數有返回值類型,調用時,除在select中,必須將返回值賦給變量

4、函數可以在select語句中直接使用,而過程不能。函數是使用select調用,而過程不是

存儲過程操作

創建過程

基本語法:

create procedure 過程名字([參數列表])

beign

過程體

end

結束符號

如果過程體中只有一條指令,那麽可以省略begin 和end

技術分享圖片

過程基本上也可以完成函數對應的所有功能

技術分享圖片

查看過程

查看過程和查看函數完全一樣,除了關鍵字。

查看全部存儲過程:show procedure status [like ‘pattern’];

查看過程的創建語句:show create procedure 過程名字;

調用過程

過程,沒有返回值,select不可能調用。

調用過程有專門的語法:call 過程名([實參列表]);

技術分享圖片

刪除過程

基本語法:drop procedure 過程名字;

存儲過程的形參類型

存儲過程也允許提供參數(形參和實參),存儲過程的參數也和函數一樣,需要指定其類型。

但是存儲過程對參數還有額外的要求:自己的參數分類

in

表示參數從外部傳入到裏面使用(過程內部使用):可以是直接數據也可以是保存數據的變量

out

表示參數是從過程裏面把數據保存到變量中,交給外部使用:傳入的必須是變量

如果說傳入的out變量本身在外部有值,那麽在進入過程之後第一件事就是被清空設為NULL

inout

數據可以從外部傳入到過程內部使用,同時內部操作之後,又會將數據返還給外部。

參數使用基本語法:

過程類型 變量名 數據類型;//in int_1 int;

技術分享圖片

技術分享圖片

技術分享圖片

在執行之後,再次查看會話變量。

技術分享圖片

技術分享圖片

MySQL數據庫8(二十六)存儲過程