存储过程(procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
1、存储过程格式
create procedure 存储过程名称 (参数列表)
begin
SQL语句
end
//begin、end代表SQL语句的开始和结束
2、分隔符
MySQL默认以“;”语句结束符(分隔符),如果没有声明分隔符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER &&”声明当前段分隔符,让编译器把两个“&&”之间的内容当做存储过程的代码,不会执行这些码;“DELIMITER ;”的意为把分隔符还原。
3、存储过程操作
(1)简单的存储过程
delimiter &&
create procedure p1()
begin
select * from course;
end &&
(2)调用存储过程p1
call p1 &&
(3)查看已有的存储过程
show procedure status \G //\G横向显示
(4)带一个参数的存储过程
create procedure p3(i int)
begin
select * from course where cno>i;
end &&
(5)调用带一个参数的存储过程
call p1(3) &&
(6)带两个参数的存储过程(if...else语句)
create procedure p2(i int,j int)
begin
if j='k' then
select * from course where cno>i;
else
select * from course where cno<i;
end if;
end &&
(7)查看带两个个参数的存储过程
call p2(4,3) &&
(8)删除存储过程
call p2(4,3) &&
(9)定义变量
declare i int;
(10)给存储变量赋值
set i=i+1;
4、求和1~n(while语句)
create procedure p3(m smallint)
begin
declare i int;
declare j int;
set i=1;
set j=0;
while i<=m do
set j=j+i;
set i=i+1;
end while;
select j;
end &&
计算1~100的和