MySQL數據庫8(二十六)存儲過程
存儲過程
存儲過程的概念
存儲過程(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(二十六)存儲過程