mysql 存储过程

Posted Anec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();

 

以上是关于mysql 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 代码中调用 MySQL 存储过程?

如何从 PHP 代码中调用 MySQL 存储过程?

如何从 PHP 代码中调用 MySQL 存储过程?

java 登录过程 - android片段,异步任务登录,Asp.net控制器,存储库

[转]MYSQL 创建存储过程

怎么在mysql中查询已建立的存储过程