菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
223
0

MySQL基础-存储过程

原创
05/13 14:22
阅读数 37004

存储过程

定义:将一批为了完成特定功能的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;')
# 如果值发生改变,说明执行成功

发表评论

0/200
223 点赞
0 评论
收藏