MySQL基礎-存儲過程

存儲過程

定義:將一批爲了完成特定功能的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;')
# 若是值發生改變,說明執行成功
相關文章
相關標籤/搜索