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

    mysql存储过程

    首先 先了解存储过程用法:

    -- 不带参数的存储过程:
        创建存储过程
        DELIMITER //
        CREATE PROCEDURE text01()  #创建存储过程名字
        BEGIN      
            SELECT * FROM infolist;  #需要执行的操作    
            END
        //
        DELIMITER ;
    
    -- 使用存储过程
        call text01        #使用这个存储过程
    
    没有注解得是固定格式.
    -- 带传入参数存储过程(in 参数):
        -- 创建存储过程
        DELIMITER //
        CREATE PROCEDURE text02(in num int)  #依旧是创建存储过程的名字,但是在括号 in关键字 变量名 变量类型
        BEGIN
        SELECT * FROM infolist where id=num;    #执行的操作
        END
        //
        DELIMITER ;
            
    -- 使用存储过程
        set @num=2        #定义变量
        call text02(@num)    #将变量传入到存储过程中
    -- 带传入参数存储过程(out 参数)
        delimiter //
        create procedure text03(out mydata int)   #out关键字 定义变量mydata 整型
        begin
        select id into mydata from infolist where id=1;  #将id 传递(into)给变量mydata
        end
        //
            delimiter ; 
    
    -- 使用存储过程
        set @num = 0;
        call text03(@num);
        select @num;
    -- 带传入参数存储过程(inout 参数)
        delimiter //
        create procedure text04(inout num int)
        begin
        set num := num *50;
        end
        //
            delimiter ; 
    
    --使用存储过程
        set @num = 177;
        call text04(@num);
        select @num;

    应用场景:

    我现在有一台主机,一台主机内有两个内存条 我已经获取到了主机的信息.

    现在已经建立了 主机表 以及内存表,其中内存表有一个外键指向主机ID

    我现在要插入主机数据,同时增加主机表信息,以及内存表信息.

        # 存储过程定义
        delimiter //
        create procedure t1_add_t2(in t1_name varchar(255),in t2_name varchar(255))
        begin
        insert into t1(name) values(t1_name);
        insert into t2(name,t1_id) VALUes(t2_name,LAST_INSERT_ID());
        end
        //
        delimiter ;
    
        # 使用存储过程
        set @t1_name = 'anec';
        set @t2_name = 'school_master';
        call t2_add_t1(@t1_name,@t2_name);

    删除存储过程:

    删除存储过程
     drop procedure 存储过程名;

    查看有哪些存储过程

    # 查看有哪些存储过程
    show procedure status;

    mysql 内置系统函数:

    row_count()  #得到操作行数

    row_count();  得到操作行数。(单独用没用)
    例子:插入数据
    INSERT test(username) VALUES('A'),('B'),('C'); 
    SELECT ROW_COUNT(); //返回被插入的记录总数 结果为3

    last_insert_id()  #返回 最后一次插入自增列的id

    select LAST_INSERT_ID();
  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/Anec/p/10530239.html
Copyright © 2011-2022 走看看