存盤程序
定義:將一批為了完成特定功能的SQL陳述句集,根據傳入的引數(也可沒有),呼叫,完成單個sql陳述句更復雜的功能
存盤程序思想很簡單,就是SQL陳述句層面上的代碼封裝和重用
優點:1) 可封裝,并隱藏復雜的業務邏輯;2) 可回傳值,且可接受引數
缺點:因支持的編程語言不通,性能調校和撰寫,受限于各種資料庫系統
創建存盤程序示例
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;')
# 如果值發生改變,說明執行成功
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/94429.html
標籤:MySQL
上一篇:mysql索引筆記
