存储过程
概念类似于函数,就是把一段代码封装起来.
当要执行者一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else,case,while等控制结构. 可以进行SQL编程. 函数的普遍特性:模块化,封装,代码复用; 速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;
存储过程弊端
不同数据库,语法差别很大,移植困难,换了数据库,需要重新编写;
不好管理,把过多业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务,其它的必要性不是很大; ...
定义
##查看存在的存储过程
mysql>show procedure status;
##删除存储过程
mysql>drop procedure 存储过程的名字
##操作
- 第一个存储过程,体会"封装sql"
delimiter $$ create procedure p1() begin select * from s_emp; end$$
- 调用存储过程
call p1()$$
- 第二个存储过程,体会"参数"
delimiter $ create procedure p2(n int) begin select * from s_emp where id>n; end$
- 第三个存储过程,体会"控制结构"
delimiter $ create procedure p3(n int,j char(1)) begin if j = 'h' then select * from s_emp where id>n; else select * from s_emp where id<n; end if; end$
- 计算1->n的和
delimiter $ create procedure p4(n smallint) begin declare i int; declare s int; set i = 1; set s = 0; while i<=n do set s = s + i; set i= i + 1; end while; select s; end$