MySQL的存储过程简单使用

如何保存存储过程到数据库中:  只要把它当成sql脚本执行就行

call : 调用存储过程 

mysql> CALL ShowStuScore();       调用   ShowStuScore()

declare  : 关键字来定义变量

default :定义变量设置默认值

 DECLARE teacher_num  int  default 10           定义变量 teacher_name,数据类型为 INT 类型,默认值为 10

set:  来为变量赋值

  set  teacher_name =30                变量  teacher_name 赋值为 30

select into :查询出来在写入赋值

 SELECT id INTO my_sql FROM tb_student WEHRE id=2;  从 tb_student 表中查询 id 为 2 的记录,将该记录的 id 值赋给变量 my_sql。

if    elseif   else    end if     :  判断

IF age>20 THEN SET @count1=@count1+1;
    ELSEIF age=20 THEN @count2=@count2+1;
    ELSE @count3=@count3+1;
END lF;
根据 age 与 20 的大小关系来执行不同的 SET 语句。如果 age 值大于20,那么将 count1 的值加 1;如果 age 值等于 20,那么将 count2 的值加 1;其他情况将 count3 的值加 1。IF 语句都需要使用 END IF 来结束。

case :  可以实现比if更为复杂的判断

 CASE age
    WHEN 20 THEN SET @count1=@count1+1;
    ELSE SET @count2=@count2+1;
END CASE;  如果 age 值为 20,count1 的值加 1,否则 count2 的值加 1。

循环:

LOOP : 简单循环                   LOOP 循环内容  END LOOP  

LEAVE :跳出循环     leave

LOOP 语句本身没有停止循环的语句,必须使用 LEAVE 语句等才能停止循环,跳出循环过程。

add_num:LOOP
    SET @count=@count+1;
    IF @count=100 THEN
        LEAVE add_num;
END LOOP add num;
循环执行 count 加 1 的操作。当 count 的值等于 100 时,跳出循环。

iterate: 跳出本次循环进入下次循环

add_num:LOOP
    SET @count=@count+1;
    IF @count=100 THEN
        LEAVE add_num;
    ELSE IF MOD(@count,3)=0 THEN
        ITERATE add_num;
    SELECT * FROM employee;
END LOOP add_num;
循环执行 count 加 1 的操作,count 值为 100 时结束循环。如果 count 的值能够整除 3,则跳出本次循环,不再执行下面的 SELECT 语句

REPEAT: REPEAT UNTIL的条件为真时才跳出循环

REPEAT
    SET @count=@count+1;
    UNTIL @count=100
END REPEAT ;     循环执行 count 加 1 的操作,count 值为 100 时结束循环

while    DO    end while  :  WHILE 语句是当满足条件时,执行循环内的语句,否则退出循环。

WHILE @count<100 DO
    SET @count=@count+1;
END WHILE;
循环执行 count 加 1 的操作,count 值小于 100 时执行循环。如果 count 值等于 100 了,则跳出循环。

验证方案:

1+2+....+100 =5050

drop procedure if exists pro;    #删除已经存在的脚本

create procedure  pro(in i int )   #in传入值    out输出值
begin                               # 开始
 declare num int default  0;        #设置局部变量
 declare sum int default  0 ;
 aa:loop                           #开始循环
    set  sum = num + sum ;
    set  num = num+1 ;            #通过set命令给变量赋值
     case num
     when 50 then  select   sum as "和"  from  dual;     #case when使用
     when 99 then  select  sum  as "和"  from  dual ;    #下面会出现三个弹框
     ELSE BEGIN END;    #这个不要忘了 不然会出现  [1339]Case not found for CASE statement
     end case;
     if num > i then   #当循环大于100时跳出循环
         leave  aa ;              #跳出循环
     end if;
    end loop;          #结束循环
 select sum from dual ;     #查询出结果
end;

#下面开始调用
call pro(100) ;

猜你喜欢

转载自blog.csdn.net/weixin_44282540/article/details/115395151