sql知识11——存储过程

存储过程

存储过程简单而言就是为以后的使用保存的一条或多条MySQL语句的集合。
存储过程支持的是MySQL5及以后的版本。

为什么使用呢?

安全、简单、高性能。
1、通过把处理封装在容易使用的单元中,简化复杂的操作。
2、由于不要求返回建立一系列的处理步骤,保障数据完整性,而且可以减少人员进行数据处理步骤,将会犯错可能性。
3、提高性能,存储过程的执行比单个的sql语句快。
4、将一些只可以用在单个请求中的MySQL元素和特性进行存储,在存储过程中可以用此编写更强大和灵活的代码。

例子:学生成绩表在这里插入图片描述

创建存储过程

创建一个存储过程,begin和end用来限定存储过程体。针对的是计算出学生的平均成绩。

delimiter //

CREATE PROCEDURE studentavggrade()
BEGIN 
	SELECT AVG(grade) AS avggrade
	FROM `score(成绩)`;
END//

delimiter ;

注意:mysql命令里面的语句之间的分隔符是英文的分号(;)。但是在存储过处理可以会出现需要分隔的语句,这时候就需要用delimiter临时改变分隔符为//,之后再变回来。

执行存储过程

CALL studentavggrade();

删除存储过程

DROP  PROCEDURE studentavggrade;

使用参数

变量是内存中一个特定位置用来临时存储数据的。在存储过程当中不直接显示结果,而是把结果返回给指定的变量。
利用in(传递给存储过程),out(从存储过程传出)和inout(对存储过程传入和传出)类型的参数将检索的值保存相应变量里。call语句在给出相应数目的参数,用来接受变量里的值。
以下演示使用参数并调用

CREATE PROCEDURE studentavggrade(
	OUT  p1 DECIMAL(8,2),
	OUT  p2 DECIMAL(8,2),
	OUT  p3 DECIMAL(8,2)
)
BEGIN 
	SELECT AVG(grade) INTO p1 FROM `score(成绩)`;
	SELECT MAX(grade) INTO p1 FROM `score(成绩)`;
	SELECT MIN(grade) INTO p1 FROM `score(成绩)`;
END;

CALL studentavggrade(@gradeavg
					@grademax
					@grademin);

注意:一个参数不可以返回多行和列。

检查存储过程

利用语句获得何时、何者创建等详细信息的存储过程列表。

SHOW CREATE PROCEDURE studentavggrade();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值