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();
  • 相关阅读:
    qt解决中文乱码
    二维数组及指针分析
    pyhon Django框架
    java回调(钩子函数)
    java.util.concurrent java并发工具包
    CountDownLatch 计数器
    报表 图形接口查询 (年月周日)
    pg 日期函数
    linux 执行脚本报错 No such file or directory
    python 处理数据常用操作
  • 原文地址:https://www.cnblogs.com/Anec/p/10530239.html
Copyright © 2011-2022 走看看