一、概述
存储过程是数据库定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程可以避免开发人员重复的编写相同的SQL语句,而且存储过程是在MySql服务器中存储和执行的,可以减少客户端与服务器端的数据传输。
1.优点
(1)提供执行性能
通常在客户端执行SQL命令时,在数据库有解析到编译这个前期准备过程。但是,存储过程是先完成了解析、编译的处理后保存在数据库中的,执行时能减轻数据库负担,提高执行性能。
(2)可减轻网络负担
使用存储过程后,复杂的数据库操作也可以在数据库服务器中完成,只要从应用程序传递给数据库必要的参数就行,比起多次传递SQL命令,这大大减轻了网路负担。
二、基本操作
1.定义存储过程
#创建存储过程 create procedure p1() begin select * from t_user; end
2.调用存储过程
#调用存储过程 call p1();
3.查看存储过程
#查看存储过程 show procedure status;
4.删除存储过程
#删除存储过程 drop procedure p1;
5.创建带参数的存储过程
#1.创建带参数的存储过程 create procedure p2(i int) begin select * from t_user where id > i; end #2.调用带参数的存储过程 call p2(3);结果:
6.创建带判断语句的存储过程
#1.创建带判断语句的存储过程 create procedure p3(i int,j char(10)) begin if j = 'high' then select * from t_user where id > i; elseif j = 'low' then select * from t_user where id < i; end if; end #2.调用带选择结构的存储过程 call p3(3,'low');
结果:
7.使用case命令使用多重条件语句
#1.使用case命令多重条件分支 create procedure p4(i int) begin case i when 1 then select * from t_user where address='北京'; when 2 then select * from t_user where address='上海'; else select * from t_user where address='吉林'; end case; end #2.查看结果 call p4(2);
结果:
8.创建局部变量
#1.创建局部变量 create procedure p5(i int) begin declare temp varchar(10); case i when 1 then set temp = '北京'; when 2 then set temp = '上海'; when 3 then set temp = '吉林'; end case; select * from t_user where address= temp; end #2.查看结果 call p5(3);
结果: