Mysql 学习笔记06

时间:2023-02-25 17:30:58

1 Mysql 存储过程的介绍:

        过程  : 封装了若干条语句,调用时,这些封装体执行。

        函数  : 是一个没有返回值得过程。

         过程 : 没有返回值的 函数。

    我们把若干条sql 封装起来,起个名字----过程。

    把此过程存储在数据库中------存储过程。 

  1 创建语法:

    create procedure procedurName()

     begin

       ---------sql 语句

     end;

     例如 : create procedure helle()

                  begin

                   select   'hello word' from dual;

                   end;

   2 查看 已有的过程  show procedure status;

  

   3 如何调用? call  procedure();

   4 存储过程是可以编程的,意味着可以使用变量,表达式,控制结构来完成复杂的功能。

   

    5 .. 求 0到100 的和,使用 while ( )循环实现

      create procedure p()

      begin

          declare total int default 0;

          declare num int default 0;

          while num <100 do

          set num:=num+1;

          set total := total +1;

          end whileo;

         select total;

        end;

6 有参数的 例子 in/out

  输入参数

    create procedure p7(in n int)
BEGIN
declare total int default 0;
declare num int default 0;
 while num <n DO
   set num:=num+1;
   set total :=total+num;
end while;
select total;
end;

drop procedure p7;

   call p7(10);

 

   输出参数

create procedure p8(in n int,out total int)
begin
  declare num int default 0;
  set total :=0;
    while num < n DO
        set num:=num+1;
        set total := total+num;
     end while;
 
end;

 calll p8(100,@aa) + select @aa;  // 输入输出

 注意,一定要初始化参数,否则结果有误。

 inout  类型  例子

     create procedure p9(inout age int) 

      begin

         set age:=age+20;

     end;  使用时 需要先初始化参数  set @aa = 18; 然后 call p9(@aa)  然后查询结果 select @aa

 

 

7  分支结构 case 的用法

     create procedure p10()

begin

        declare pos int default 0;

       set  pos := floor(5* rand());

         case pos

              when 1 then select ' stilll flying';

              when 2 then select 'fall in sea';

              when 3 then select 'in the island';

              else select ' i dont know ';

              end case;

end;

 

8 ----repeat 循环

  create procedure p11()

      begin

        declare total int default 0;

        declare i int default 0;

         repeat

          set i:= i+1;

          set total :=total+i;

         until i>=100 end repeat;

    select total;

end;