mysql workbench 存储过程

来源:互联网 发布:极品网络女神sally 编辑:程序博客网 时间:2024/06/06 02:21

MySQL的存储过程: 

mysql存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 

要注意的地方: 

1.不能在一个存储过程里定义另一个存储过程,但可以调用另一个存储过程 
2. 在命令提示符里,需要修改分隔符,改为其它如:/    然后可以写多个sql 语句,语句之间通过(;)进行分割

语法:

 1  一般格式

create procedure p1()   //p1:过程名字;():必须有

   begin
     insert into user(account,pwd) values('aa','aa');
     select * from user;
   end
 2 带参
   create procedure p2(x int)
BEGIN
  declare y int;-- 定义整形变量y
  set y=x+1;    --  赋值
  select y;     -- 查询并输出y
end
3-- 输出参数
create PROCEDURE p3(in x int,out y int)
 BEGIN
   set y=x+1;
 end
4-- 判断
CREATE PROCEDURE p4( x int)
 BEGIN 
    if x>5 THEN
      select '大于5';
    elseif x>100 THEN
      select '大于100';
    else 
      select '小于5';
    end if;
 end
5 --多路选择
 create PROCEDURE p6(x int)
BEGIN 
  CASE
    when x=5 THEN  
      select '==5';
    when  x>5 THEN
      select '>5';
    ELSE  
      select '<5';
   end case;
end
6 --循环
  create PROCEDURE p5()
BEGIN 
  DECLARE x int;
  set x=0;
  while x<5 do
    select x;
    set x=x+1;
  end while;
END

7 --游标

医疗阶段报销

报销起伏线1:

start_line300


阶段报销比例表2: 
low2high2percent30110000.5100150000.65001100000.7100011000000.9

create procedure p9(x float)
BEGIN
  declare start2 int DEFAULT 0;
  DECLARE  low2 int ;  -- 低
  DECLARE  high2 int ; -- 高
  DECLARE  percent2 float ; -- 比例
  declare  total  float ;-- 报销所得
  DECLARE  temp int DEFAULT 0;
  declare last int DEFAULT 0; 
   -- 定义游标c
   declare c CURSOR for select * from segment;
  -- 游标结束的标志
   DECLARE CONTINUE HANDLER for not found set last=-1;
    -- 读出起付线
  select start_line into start2 from startn;  
   set temp=x;
   -- 打开游标
  open c;
-- 读取第一条数据
   FETCH c into low2,high2,percent2;
  WHILE last!=-1 do
    if x>low2 and x<high2 THEN
       set total=total+(temp-300)*percent2;
    end if;
    if x>high2 THEN  
       set total=(high2-low2)*percent2;
       set temp=x-(high2-low2);
    end if;
    FETCH c into low2,high2,percent2;
  end while;
-- 关闭游标
  close c;
  select total;
end
原创粉丝点击