zoukankan      html  css  js  c++  java
  • mysql-18-function

    #函数
    /*
    存储过程:可以有0个或多个返回,适合批量插入、批量更新
    函数:有且仅有一个返回,适合处理数据后返回一个结果
    */
    
    #一、创建语法
    /*
    create function 函数名(参数列表)  returns 返回类型 
    begin
    	函数体
    end
    
    参数列表:
    	参数名 参数类型
    
    */
    
    use myemployees;
    set global log_bin_trust_function_creators=TRUE;
    
    #案例1:返回公司的员工个数
    delimiter &
    create function myf1() returns int
    begin
    	declare c int default 0;  #定义变量
        select count(*) into c  #赋值
        from employees;
        return c;
    end &
    #调用函数用select
    select myf1()&
    
    #案例2:根据员工名,返回工资
    create function myf2(empName varchar(20)) returns double
    begin
    	set @sal=0;
    	select salary into @sal
        from employees
        where last_name=empName;
        return @sal;
    end &
    
    select myf2('Kochhar')&
    
    
    #查看函数
    show create function myf2&
    
    
    #删除函数
    # drop function myf3;
    
    
    #流程控制结构
    /*
    顺序结构
    分支结构
    循环结构
    */
    
    #一、分支
    /*
    1.if函数
    select if(表达式1, 表达式2, 表达式3)
    如果表达式1成立,返回表达式2,否则返回表达式3
    
    2.case结构
    实现等值或区间判断
    case 变量|表达式|字段
    when 要判断的值 then 返回的值或语句1;
    when 要判断的值 then 返回的值或语句2;
    ...
    else 返回的值n;
    end case;
    
    */
    
    #案例:创建存储过程,跟据传入的成绩来显示等级
    create procedure test_case(
    	in score int
    )
    begin
    	case
        when score >=90 and score <= 100 then select 'A';
        when score >=80 then select 'B';
    	when score >=60 then select 'C';
        else select 'D';
        end case;
    end&
    
    call test_case(95)&
    
    #if结构,实现多重分支
    /*
    只能应用在begin end中
    
    if 条件1 then 语句1;
    elseif 条件2 then 语句2;
    ...
    else 语句n;
    end if; 
    */
    
    #案例:创建存储过程,跟据传入的成绩返回级别
    create function test_if(score int) returns char
    begin
    	if score >= 90 and score <= 100 then return 'A';
        elseif score >= 80 then return 'B';
        elseif score >=60 then return 'C';
        else return 'D';
        end if;
    end&
    
    select test_if(75)&
    
    
    #循环结构
    /*
    while, loop, repeat
    循环控制:
    	iterate 类似于continue
        leave 类似于break
        
    1、while
    【标签:】while 循环条件 do
    	循环体;
    end while 【标签】;
    
    
    2、loop
    【标签:】loop
    	循环体;
    end loop 【标签】;
    
    可以用来模拟简单的死循环
    
    
    3、repeat
    【标签:】repeat
    	循环体;
    until 结束条件
    end repeat 【标签】;
    */
    
    #案例:批量插入,根据次数插入到admin表中多条记录
    use girls&
    drop procedure pro_while1&
    create procedure pro_while1(
    in insertcount int
    )
    begin
    	declare i int default 1;
        while i <= insertcount do
    		insert into admin(username, password) values(concat('rois',i), '666');
            set i = i+1;
    	end while;
    end&
    
    call pro_while1(5)&
    select * from admin&
    
    #案例:批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止
    create procedure pro_while2(
    in insertcount int
    )
    begin
    	declare i int default 1;
        a:while i <= insertcount do
    		insert into admin(username, password) values(concat('xiaohua',i), '777');
            if i >= 20 then leave a;
            end if;
            set i = i+1;
    	end while a;
    end&
    
    call pro_while2(22)&
    select * from admin&
    

      

  • 相关阅读:
    罗美琪和春波特的故事...
    欢迎参与 KubeVela 官方文档翻译活动
    开源 1 年半 star 破 1.2 万的 Dapr 是如何在阿里落地的?
    Service Mesh 从“趋势”走向“无聊”
    Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外
    阿里巴巴云原生 etcd 服务集群管控优化实践
    KubeVela 1.0 :开启可编程式应用平台的未来
    知行动手实验室可以用来做什么?
    7. Jackson用树模型处理JSON是必备技能,不信你看
    Linux:sudo,没有找到有效的 sudoers 资源
  • 原文地址:https://www.cnblogs.com/chaojunwang-ml/p/13261869.html
Copyright © 2011-2022 走看看