mysql存储过程详解_mysql存储过程详解,跟老韩一起学习吧

在实际工作中可能会碰到这样的需求,我经常会进行一些操作,这些操作是固定的,但是每次操作都要写几十条语句,如何解决这个问题呢?那就跟着老韩学习mysql存储过程把,学完了之后这个问题迎刃而解,Let's go。

一、概念;

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

二、存储过程优点;

1、优点;

存储过程可封装,并隐藏复杂的商业逻辑。

存储过程可以回传值,并可以接受参数。

存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。

存储过程可以用在数据检验,强制实行商业逻辑等。

执行效率高。

三、存储过程和函数的区别;

有不少初学者朋友分不清存储过程和函数,觉得函数和存储过程好像没有什么区别,

1、存储过程;

用于在数据库中完成特定的操作或者任务(如插入、删除等);

程序头部声明用procedure;

程序头部声明时不需描述;

返回类型可以使用in/out/in out 三种模式的参数;

作为一个独立个体执行(使用关键字call后面跟存储过程名字来执行);

可以通过out/in out 返回零个或多个值;

SQL语句(DML 或SELECT)中不可调用存储过程(作为一个独立个体执行可看出);

2、函数;

用于特定的数据处理(如获取今天的日期);

程序头部声明用function;

程序头部声明时要描述返回类型,而且PL/SQL块中至少要包括一个有效的return语句;

可以使用in/out/in out 三种模式的参数;

不能独立执行,必须作为表达式的一部分调用;

通过return语句返回一个值,且改值要与声明部分一致,也可以是通过out类型的参数带出的变量;

SQL语句(DML 或SELECT)中可以调用函数;

四、如何自己创建一个存储过程;

标准写法:

create procedure 存储过程名称( in/out/intout)

begin

语句(可多个语句)

end

1、无参的存储过程;

33c6ff1d7e26c3b9f125f8a03c135ca8.png

2、有参数的存储过程;

25cff94899774a600fb21a94d9ef9c58.png

3、有返回值的存储过程;

c3832f91ebc6dd1b19f5e620a699e56a.png

4、有参数和返回值的存储过程;

a7a6835d9abf1d77fb7c86524f02cec2.png

五、执行、更新、删除存储过程

1、执行存储过程;

执行存储过程使用call来调用,如上面的四个例子中,第一个就是call del;

有参的调用方法为call ad(6);该语句会自动打印total的值,因为在存储过程中最后一个语句是select total,相当于给total的值查询了出来;

有返回值的存储过程可以使用call add(6,@sum),想得到out的值,需要再跟一个select @sum,相当于我传入了一个参数6,同时声明一个变量@sum来接收返回值,最后select @sum查询返回值的值;

有参数和返回值的存储过程调用方法为set @nub = 6;call plus(@nub),select @nub,相当于我先声明一个变量等于6,把变量传入之后进行运算,相当于给这个变量重新赋值,然后再查询这个变量的值。

2、更新存储过程;

ALTER PROCEDURE [ … ]

3、删除存储过程;

drop procedure 存储过程名字;

存储过程就讲完了,当然老韩讲的都是很简单的存储过程,带参数的存储过程老韩说心里话还没有用过,前面老韩讲了一个年假自动更新的操作大家还记得吗?就是每天24:00定时执行一个操作,判断人员入职满一年就自动累加年假天数的需求,这个其实就是存储过程和定时器联合使用的案例,存储过程还支持嵌套,就是存储过程中可以嵌套存储过程,很多时候只要逻辑上没问题都是可以的,希望大家能理解基础的,在基础上延伸,去提升。

今天的内容就到这里,没有关注的朋友可以点一下关注,你们每一次的关注、转发、收藏都是老韩持续更新的动力,谢谢观看,我们下期触发器再见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值