zoukankan      html  css  js  c++  java
  • mysql-17-procedure

    #存储过程
    /*
    一组预先编译好的sql语句集合,理解成批处理语句
    
    好处:
    	1、提高代码重用性
        2、简化操作
        3、减少了编译次数并减少了和数据库服务器的连接次数,提高了效率
    */
    
    #一、创建
    /*
    create procedure 存储过程名(参数列表)
    begin
    	一组合法的sql语句
    end
    
    注意:
    1、参数列表
    	参数模式	 参数名  参数类型
    in stuname varchar(20)
    
    2、参数模式
    in  该参数可以作为输入,传入值
    out  该参数可以作为输出,返回值
    inout  输入输出都可以
    
    3、如果存储过程体只有一句话,begin end可以省略
    
    4、存储体中,每条sql语句的结尾要求必须加分号;存储过程的结尾可以用delimiter重新设置
    */
    
    
    #二、调用
    /*
    call 存储过程名(实参列表);
    */
    
    #1、空参列表
    #案例:插入到admin表中五条记录
    use girls;
    select * from admin;
    
    delimiter &
    create procedure myp1()
    begin
    	insert into admin(username, password) 
        values('john1', '0000'), ('lily', '1000');
    end &
    
    call myp1()&
    select * from admin&
    
    
    #2、创建带in模式参数的存储过程
    #案例1:根据女生名,查询对应的男生信息
    delimiter &
    create procedure mpv2(
    	in beauty_name varchar(20) 
    )
    begin 
    	select bo.*
        from beauty as b
        left join boys as bo
        on bo.id = b.boyfriend_id
        where b.name=beauty_name;
    end &
    
    call mpv2('柳岩')&
    
    #案例2:创建存储过程实现,用户是否登录成功
    create procedure mpv3(
    	in username varchar(20),
        in password varchar(20)
    )
    begin
    	declare result varchar(20) default '';
    	select count(*) into result  #赋值
        from admin
        where admin.username = username and admin.password = password;
        select if(result>0, '成功', '失败');
    end&
    
    call mpv3('张飞', '8888')&
    call mpv3('john', '8888')&
    
    #3、创建带out模式的存储过程
    #案例1:根据女生名,返回对应的男生名
    create procedure mpv4(
    	in beautyName varchar(20),
        out boyName varchar(20)
    )
    begin
    	select bo.boyName into boyName
        from boys as bo
        inner join beauty as b on bo.id = b.boyfriend_id
        where b.name = beautyName;
    end&
    
    #调用
    call mpv4('小昭', @bName)&
    select @bName;
    
    
    #4、带inout模式的存储过程
    #案例1:传入a和b两个值,最终a和b都翻倍并返回
    create procedure mpv5(
    	inout a int,
        inout b int
    )
    begin
    	set a = a*2;
    	set b = b*2;
    end&
    
    set @v1 = 10&
    set @v2 = 20&
    call mpv5(@v1, @v2)&
    select @v1, @v2&
    
    #存储过程的删除
    #只能一次删一个
    # drop procedure 存储过程名;
    
    
    #查看存储过程
    show create procedure mpv5;
    
    delimiter ;
    

      

  • 相关阅读:
    “访问”美术馆
    加分二叉树
    有线电视网
    二叉苹果树
    鬼子进村
    遍历问题
    最大子树和
    FBI树
    求前序遍历
    JS如何实现点击页面内任意的链接均加参数跳转?
  • 原文地址:https://www.cnblogs.com/chaojunwang-ml/p/13261710.html
Copyright © 2011-2022 走看看