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

 

存儲過程

存儲過程的概念

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

 

存儲過程:簡稱過程編程

與函數的區別

相同點

一、存儲過程和函數的目的都是爲了可重複地執行操做數據庫的SQL語句的集合(代碼複用)函數

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

 

不一樣點

一、標識符不一樣。函數的標識符爲function,過程爲procedure對象

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

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

四、函數能夠在select語句中直接使用,而過程不能。函數是使用select調用,而過程不是編譯

 

存儲過程操做

建立過程

基本語法:function

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;

 

 

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

相關文章
相關標籤/搜索