zoukankan      html  css  js  c++  java
  • mysql 存储过程

    • 引言

    之前学习过存储过程,但是平时没有太多机会用到,所以想把学到的东西记录下来,增加印象。


    • 含义

    一组预先编译好的SQL语句集合,可以理解成批处理语句

    1. 提高代码的重用性
    2. 简化操作
    3. 减少了编译次数并且减少了和数据库服务器的连接次数, 提高了效率

    创建语法

    create procedure 存储过程名(参数列表)
    begin
        存储过程体(一组合法的SQL语句)
    end
    

    注意:

    1. 参数列表包含三部分
      参数模式 参数名 参数类型
      IN name varchar(20)

    参数模式:
    IN: 该参数可以作为输入, 也就是该参数需要调入方传入值
    OUT: 该参数可以作为输出, 也就是该参数可以作为返回值
    INOUT: 该参数既可以作为输入也可以作为输出, 也就是该参数既需要传入值,又可以返回值

    1. 如果存储过程体仅仅有一条语句,begin end可以省略,存储过程体中的每条SQL语句的结尾要求必须加分号。存储过程结尾可用delimiter重新设置
      语法
    delimiter 结束标记
    delimiter $
    

    调用语法

    call 存储过程名(实参列表)
    

    空参列表

    1. 案例:插入到表中两条记录
    delimiter $
    create PROCEDURE mypl()
    BEGIN
    	insert into register_users(phone, status, created_at, updated_at) values
    	('13847563647', 1, '2018-10-19 22:27:45', '2018-10-19 22:27:45'),('13847568888', 1, '2018-10-19 22:27:45', '2018-10-19 22:27:45');
    end $
    
    call mypl();
    
    1. 创建IN模式参数的存储过程
      案例:传入一个值,查询他的两倍
    delimiter $
    create PROCEDURE myp3(IN a int)
    BEGIN
    	DECLARE sum  INT DEFAULT 0;
    	set sum = a+a;
    	select sum;
    end $
    
    call myp3(4);
    
    1. 创建OUT模式参数的存储过程
      案例:传入一个值,查询他的两倍
    delimiter $
    create PROCEDURE myp4(OUT a int)
    BEGIN
    	SELECT COUNT(*) into a from admins;
    end $
    
    
    set @a;
    call myp4(@a);
    select @a;
    
    1. 创建INOUT模式参数的存储过程
      案例:传入a, b两个值, 最终a和 b 都翻倍返回
    delimiter $
    create PROCEDURE myp5(INOUT n1 int, INOUT n2 int)
    BEGIN
    	set n1 = 2 * n1;
    	set n2 = 2 * n2;
    end $
    
    set @n1=1, @n2=2;
    call myp5(@n1, @n2);
    
    select @n2;
    

    删除存储过程

    drop procedure 存储过程名
    

    查看存储过程

    show create procedure 存储过程名
    
  • 相关阅读:
    【crontab】误删crontab及其恢复
    New Concept English there (7)
    New Concept English there (6)
    New Concept English there (5)
    New Concept English there (4)
    New Concept English there (3)
    New Concept English there (2)Typing speed exercise
    New Concept English there (1)Typing speed exercise
    New Concept English Two 34 game over
    New Concept English Two 33 94
  • 原文地址:https://www.cnblogs.com/binxyz/p/10455353.html
Copyright © 2011-2022 走看看