定義:將一批爲了完成特定功能的SQL語句集,根據傳入的參數(也可沒有),調用,完成單個sql語句更復雜的功能python
存儲過程思想很簡單,就是SQL語句層面上的代碼封裝和重用mysql
優勢:1) 可封裝,並隱藏複雜的業務邏輯;2) 可回傳值,且可接受參數sql
缺點:因支持的編程語言不通,性能調校和撰寫,受限於各類數據庫系統數據庫
建立存儲過程示例編程
delimiter $$ -- 建立存儲過程 create procedure p_user( int m int, -- in 表示該參數是傳入參數,不能看成返回值 int n int, out res int -- out 表示該參數是返回參數,只能做爲返回值,不用於接收 -- inout 表示既能夠接收傳入的值也能夠看成返回值 ) begin select username from user_info where uid between m and n; set res=0; end $$ delimiter ; -- 1.在mysql中調用 set @res=10 call p_user(2,4,10); -- 該語句報錯 call p_user(2,4,@res) -- 正確的調用方式 select @res; -- 執行成功,@res變量的值發生改變 -- 2.在python中調用 pymysql鏈接mysql 獲取到遊標對象cursor 經過遊標對象cursor.callproc('p_user',(2,4,10)) # 參數內部原理:@_p_user_0=2,@_p_user_1=4,@_p_user_2=10 遊標對象cursor.execute('select @_p_user_2;') # 若是值發生改變,說明執行成功