一,什么是数据库存储过程?
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程(procedure)类似于C语言中的函数。
用来执行管理任务或应用复杂的业务规则。
存储过程可以带参数,也可以返回结果。
存储过程可以包含数据操纵语句、变量、逻辑 控制语句等。
存储过程是一组预编译的SQL语句,它可以包含数据操纵语句、变量、逻辑控制语句等
存储过程允许带参数,参数分为:
输入参数
输出参数
其中,输入参数可以有默认值。
二,为什么要使用存储过程??(存储过程的好处/优点)
(1)实现了模块化编程。
(2)调用一次以后,相关信息就保存在内存中,下次调用时可以直接执行。
(3)存储过程可以接受输入参数并可以返回输出值。
(4)存储过程具有对数据库立即访问的功能。
(5)使用存储过程可以加快程序的运行速度。
(6)使用存储过程可以减少网络流量。
(7)使用存储过程可以提高数据库的安全性。
三,存储过程的分类
(1)数据库系统存储过程:数据库自带
(2)用户自定义数据库存储过程:由用户根据需要自定义
四,MySql数据库存储过程
创建存储过程:
create procedure 存储过程名字()
begin
SQL语句/逻辑
end;
调用存储过程:
call 存储过程名字();
或
call 存储过程名字(@参数1,@参数2,@参数3,...);
删除存储过程:
drop procedure if exists 存储过程名字; - -这里存储过程名字后面没有()
**五,举个例子
- 创建数据库:
create database test; - 使用数据库:
use test; - 创建数据表student:
create table student(
id int not null comment '学生id',
name varchar(30) comment '学生姓名',
chinese int(3) comment '语文成绩',
math int(3) comment '数学成绩',
enginsh int(3) comment '英语成绩',
count int(3) comment '总成绩',
primary key(id)
)Engine=InnoDB default charset=utf8 comment '学生成绩表';
4 数据表的数据为:
- 创建带参数的存储过程:
create procedure mm(
out min int,
out max int,
out avg decimal(8,2)
)
begin
select MIN(chinese) into min from student;
select MAX(math) into max from student;
select AVG(count) into avg from student;
end;
6.调用存储过程:
call mm(@min,@max,@avg);
该调用并没有任何输出, 只是把调用的结果赋给了调用时传入的变量(@min, @avg, @max)。然后即可调用显示该变量的值。
- 调用显示存储过程的值:
select @min,@max,@avg;
8.使用in参数, 输入一个学生id, 返回该学生的总成绩
存储过程代码:
create procedure getTotal(
in id int,
out total decimal(8,2)
)
begin
select SUM(s.count) from student s
where s.id = id
into total;
end;
9.调用存储过程:
call getTotal(2, @total);
select @total;
至此就是一个简单的MySql数据库存储过程。
由于慕课网编辑发手记的功能没有做好,可能存在编辑排版问题,在此也希望慕课网改进!