存储过程

  1. 概念类似于函数,就是把一段代码封装起来.
  1. 当要执行者一段代码的时候,可以通过调用该存储过程来实现.
  2. 在封装的语句体里面,可以用if/else,case,while等控制结构.
  3. 可以进行SQL编程.
  4. 函数的普遍特性:模块化,封装,代码复用;
  5. 速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;

存储过程弊端

  1. 不同数据库,语法差别很大,移植困难,换了数据库,需要重新编写;
  1. 不好管理,把过多业务逻辑写在存储过程不好维护,不利于分层管理,容易混乱,一般存储过程适用于个别对性能要求较高的业务,其它的必要性不是很大;
  2. ...

定义

##查看存在的存储过程
mysql>show procedure status;

##删除存储过程
mysql>drop procedure 存储过程的名字

##操作

  1. 第一个存储过程,体会”封装sql”
  1. delimiter $$
  2. create procedure p1()
  3. begin
  4. select * from s_emp;
  5. end$$
  1. 调用存储过程
  1. call p1()$$
  1. 第二个存储过程,体会”参数”
  1. delimiter $
  2. create procedure p2(n int)
  3. begin
  4. select * from s_emp where id>n;
  5. end$
  1. 第三个存储过程,体会”控制结构”
  1. delimiter $
  2. create procedure p3(n int,j char(1))
  3. begin
  4. if j = 'h' then
  5. select * from s_emp where id>n;
  6. else
  7. select * from s_emp where id<n;
  8. end if;
  9. end$
  1. 计算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$